⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smartupload.java

📁 java上传文件工具非常实用 java上传文件工具非常实用
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi
// Source File Name:   SmartUpload.java

package com.westerasoft.util.jspsmart.upload;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;

// Referenced classes of package com.jspsmart.upload:
//            Files, Request, SmartUploadException, File

public class SmartUpload{

  public byte m_binArray[];

  protected HttpServletRequest m_request;

  protected HttpServletResponse m_response;

  protected ServletContext m_application;

  private int m_totalBytes;

  private int m_currentIndex;

  private int m_startData;

  private int m_endData;

  private String m_boundary;

  private long m_totalMaxFileSize;

  private long m_maxFileSize;

  private Vector m_deniedFilesList;

  private Vector m_allowedFilesList;

  private boolean m_denyPhysicalPath;

  private boolean m_forcePhysicalPath;

  private String m_contentDisposition;

  public static final int SAVE_AUTO=0;

  public static final int SAVE_VIRTUAL=1;

  public static final int SAVE_PHYSICAL=2;

  private Files m_files;

  private Request m_formRequest;

  public SmartUpload(){
    m_totalBytes=0;
    m_currentIndex=0;
    m_startData=0;
    m_endData=0;
    m_boundary=new String();
    m_totalMaxFileSize=0L;
    m_maxFileSize=0L;
    m_deniedFilesList=new Vector();
    m_allowedFilesList=new Vector();
    m_denyPhysicalPath=false;
    m_forcePhysicalPath=false;
    m_contentDisposition=new String();
    m_files=new Files();
    m_formRequest=new Request();
  }

  public final void init(ServletConfig config) throws ServletException{
    m_application=config.getServletContext();
  }

  public final void initialize(ServletConfig config,HttpServletRequest request,
      HttpServletResponse response) throws
      ServletException{
    m_application=config.getServletContext();
    m_request=request;
    m_response=response;
  }

  public void service(HttpServletRequest request,HttpServletResponse response) throws
      IOException,ServletException{
    m_request=request;
    m_response=response;
  }

  public final void initialize(PageContext pageContext) throws ServletException{
    m_application=pageContext.getServletContext();
    m_request=(HttpServletRequest)pageContext.getRequest();
    m_response=(HttpServletResponse)pageContext.getResponse();
  }

  public final void initialize(ServletContext application,HttpSession session,
      HttpServletRequest request,
      HttpServletResponse response,JspWriter out) throws
      ServletException{
    m_application=application;
    m_request=request;
    m_response=response;
  }

  public void upload() throws SmartUploadException,IOException,
      ServletException{
    int totalRead=0;
    int readBytes=0;
    long totalFileSize=0L;
    boolean found=false;
    String dataHeader=new String();
    String fieldName=new String();
    String fileName=new String();
    String fileExt=new String();
    String filePathName=new String();
    String contentType=new String();
    String contentDisp=new String();
    String typeMIME=new String();
    String subTypeMIME=new String();
    boolean isFile=false;
    m_totalBytes=m_request.getContentLength();
    if(m_totalMaxFileSize>0&&m_totalMaxFileSize<m_totalBytes){
      throw new SmartUploadException("上传文件太大,请重新选择! (1110).");
    }
    m_binArray=new byte[m_totalBytes];
    for(;totalRead<m_totalBytes;totalRead+=readBytes){
      try{
        m_request.getInputStream();
        readBytes=m_request.getInputStream().read(m_binArray,totalRead,
            m_totalBytes-totalRead);
      } catch(Exception e){
        throw new SmartUploadException("上传文件失败,请重试!");
      }
    }

    for(;!found&&m_currentIndex<m_totalBytes;m_currentIndex++){
      if(m_binArray[m_currentIndex]==13){
        found=true;
      } else{
        m_boundary=m_boundary+(char)m_binArray[m_currentIndex];

      }
    }
    if(m_currentIndex==1){
      return;
    }
    m_currentIndex++;
    do{
      if(m_currentIndex>=m_totalBytes){
        break;
      }
      dataHeader=getDataHeader();
      m_currentIndex=m_currentIndex+2;
      isFile=dataHeader.indexOf("filename")>0;
      fieldName=getDataFieldValue(dataHeader,"name");
      if(isFile){
        filePathName=getDataFieldValue(dataHeader,"filename");
        fileName=getFileName(filePathName);
        fileExt=getFileExt(fileName);
        contentType=getContentType(dataHeader);
        contentDisp=getContentDisp(dataHeader);
        typeMIME=getTypeMIME(contentType);
        subTypeMIME=getSubTypeMIME(contentType);
      }
      getDataSection();
      if(isFile&&fileName.length()>0){
        fileExt=fileExt.toLowerCase();
        if(m_deniedFilesList.contains(fileExt)){
          throw new SmartUploadException(
              "上传文件失败,文件类型不支持! (1015).");
        }
        if(!m_allowedFilesList.isEmpty()&&
            !m_allowedFilesList.contains(fileExt)){
          throw new SmartUploadException(
              "上传文件失败,文件类型不支持! (1010).");
        }
        if(m_maxFileSize>(long)0&&
            (long)((m_endData-m_startData)+1)>m_maxFileSize){
          throw new SmartUploadException(String.valueOf((new StringBuffer(
              "上传文件失败,文件太大: ")).append(fileName).append(
              " (1105).")));
        }
        totalFileSize+=(m_endData-m_startData)+1;
        if(m_totalMaxFileSize>(long)0&&totalFileSize>m_totalMaxFileSize){
          throw new SmartUploadException("上传文件太大,请重新选择! (1110).");
        }
        if(totalFileSize<1){
          throw new SmartUploadException("上传文件没有内容,请重新选择! (1110).");
        }
      }
      if(isFile){
        com.westerasoft.util.jspsmart.upload.File newFile=new com.westerasoft.
            util.
            jspsmart.upload.File();
        newFile.setParent(this);
        newFile.setFieldName(fieldName);
        newFile.setFileName(fileName);
        newFile.setFileExt(fileExt);
        newFile.setFilePathName(filePathName);
        newFile.setIsMissing(filePathName.length()==0);
        newFile.setContentType(contentType);
        newFile.setContentDisp(contentDisp);
        newFile.setTypeMIME(typeMIME);
        newFile.setSubTypeMIME(subTypeMIME);
        if(contentType.indexOf("application/x-macbinary")>0){
          m_startData=m_startData+128;
        }
        newFile.setSize((m_endData-m_startData)+1);
        newFile.setStartData(m_startData);
        newFile.setEndData(m_endData);
        m_files.addFile(newFile);
      } else{
        String value=new String(m_binArray,m_startData,
            (m_endData-m_startData)+1);
        m_formRequest.putParameter(fieldName,value);
      }
      if((char)m_binArray[m_currentIndex+1]=='-'){
        break;
      }
      m_currentIndex=m_currentIndex+2;
    } while(true);
  }

  public int save(String destPathName) throws SmartUploadException,IOException,
      ServletException{
    return save(destPathName,0);
  }

  public int save(String destPathName,int option) throws SmartUploadException,
      IOException,ServletException{
    int count=0;
    if(destPathName==null){
      destPathName=m_application.getRealPath("/");
    }
    if(destPathName.indexOf("/")!=-1){
      if(destPathName.charAt(destPathName.length()-1)!='/'){
        destPathName=String.valueOf(destPathName).concat("/");
      }
    } else{
      if(destPathName.charAt(destPathName.length()-1)!='\\'){
        destPathName=String.valueOf(destPathName).concat("\\");
      }
    }
    for(int i=0;i<m_files.getCount();i++){
      if(!m_files.getFile(i).isMissing()){
        m_files.getFile(i).saveAs(destPathName+m_files.getFile(i).getFileName(),
            option);
        count++;
      }
    }

    return count;
  }

  public int getSize(){
    return m_totalBytes;
  }

  public byte getBinaryData(int index){
    byte retval;
    try{
      retval=m_binArray[index];
    } catch(Exception e){
      throw new ArrayIndexOutOfBoundsException("Index out of range (1005).");
    }
    return retval;
  }

  public Files getFiles(){
    return m_files;
  }

  public Request getRequest(){
    return m_formRequest;
  }

  public void downloadFile(String sourceFilePathName) throws
      SmartUploadException,IOException,ServletException{
    downloadFile(sourceFilePathName,null,null);
  }

  public void downloadFile(String sourceFilePathName,String contentType) throws
      SmartUploadException,IOException,ServletException{
    downloadFile(sourceFilePathName,contentType,null);
  }

  public void downloadFile(String sourceFilePathName,String contentType,
      String destFileName) throws SmartUploadException,
      IOException,ServletException{
    downloadFile(sourceFilePathName,contentType,destFileName,65000);
  }

  public void downloadFile(String sourceFilePathName,String contentType,
      String destFileName,
      int blockSize) throws SmartUploadException,
      IOException,ServletException{
    if(sourceFilePathName==null){
      throw new IllegalArgumentException(String.valueOf((new StringBuffer(
          "File '")).
          append(sourceFilePathName).append("' not found (1040).")));
    }
    if(sourceFilePathName.equals("")){
      throw new IllegalArgumentException(String.valueOf((new StringBuffer(
          "File '")).
          append(sourceFilePathName).append("' not found (1040).")));
    }
    if(!isVirtual(sourceFilePathName)&&m_denyPhysicalPath){
      throw new SmartUploadException("Physical path is denied (1035).");
    }
    if(isVirtual(sourceFilePathName)){
      sourceFilePathName=m_application.getRealPath(sourceFilePathName);

    }
    File file=new File(sourceFilePathName);
    FileInputStream fileIn=new FileInputStream(file);
    long fileLen=file.length();
    int readBytes=0;
    int totalRead=0;
    byte b[]=new byte[blockSize];
    if(contentType==null){
      m_response.setContentType("application/x-msdownload");
    } else{
      if(contentType.length()==0){
        m_response.setContentType("application/x-msdownload");
      } else{
        m_response.setContentType(contentType);
      }
    }
    m_response.setContentLength((int)fileLen);
    if(destFileName==null){
      m_response.setHeader("Content-Disposition",
          "attachment; filename="+
          toUtf8String(this.getFileName(sourceFilePathName)));
    } else{
      if(destFileName.length()==0){
        m_response.setHeader("Content-Disposition","attachment;");
      } else{
        m_response.setHeader("Content-Disposition",
            "attachment; filename="+
            toUtf8String(this.getFileName(sourceFilePathName)));
      }
    } while((long)totalRead<fileLen){
      readBytes=fileIn.read(b,0,blockSize);
      totalRead+=readBytes;
      m_response.getOutputStream().write(b,0,readBytes);
    }
    fileIn.close();
  }

  public void downloadFile(byte[] buffer,String contentType,
      String destFileName) throws SmartUploadException,
      IOException,ServletException{
    int readBytes=0;
    int totalRead=0;
    byte b[]=buffer;
    if(contentType==null){
      m_response.setContentType("application/x-msdownload");
    } else{
      if(contentType.length()==0){
        m_response.setContentType("application/x-msdownload");
      } else{
        m_response.setContentType(contentType);
      }
    }
    if(destFileName==null){
      m_response.setHeader("Content-Disposition",
          "attachment; filename="+
          toUtf8String(destFileName));
    } else{
      if(destFileName.length()==0){
        m_response.setHeader("Content-Disposition","attachment;");
      } else{
        m_response.setHeader("Content-Disposition",
            "attachment; filename="+
            toUtf8String(destFileName));
      }
    }
    m_response.getOutputStream().write(buffer, 0, buffer.length);
  }

  //YunFan add the new method in 2003-12-19
  public void downloadField(ResultSet rs,String columnName,String contentType,
      String destFileName,String DataBaseType) throws
      SQLException,IOException,ServletException{
    if(rs==null){
      throw new IllegalArgumentException("The RecordSet cannot be null (1045).");
    }
    if(columnName==null){
      throw new IllegalArgumentException(
          "The columnName cannot be null (1050).");
    }
    if(columnName.length()==0){
      throw new IllegalArgumentException(
          "The columnName cannot be empty (1055).");
    }

    if(DataBaseType.equalsIgnoreCase("oracle")){
      java.sql.Blob myReadBlob=rs.getBlob(columnName);

      int ln=(int)myReadBlob.length();
      java.io.InputStream readis=myReadBlob.getBinaryStream();
      //System.out.println("文件大小:" + ln);
      byte b[]=new byte[ln];
      for(int j=0;j<ln;j++){
        byte l=(byte)readis.read();
        b[j]=l;
      }
      m_response.resetBuffer();
      if(contentType==null){
        m_response.setContentType("application/x-msdownload");
      } else
      if(contentType.length()==0){
        m_response.setContentType("application/x-msdownload");
      } else{
        m_response.setContentType(contentType);
      }
      if(destFileName==null){
        m_response.setHeader("Content-Disposition","attachment;");
      } else
      if(destFileName.length()==0){
        m_response.setHeader("Content-Disposition","attachment;");
      } else{
        destFileName=new String(destFileName.getBytes("GB2312"),"ISO8859-1");
        m_response.setHeader("Content-Disposition",
            "attachment; filename=".
            concat(String.valueOf(destFileName)));
      }
      m_response.getOutputStream().write(b,0,b.length);

    } else{
      byte b[]=rs.getBytes(columnName);
      if(contentType==null){
        m_response.setContentType("application/x-msdownload");
      } else
      if(contentType.length()==0){
        m_response.setContentType("application/x-msdownload");
      } else{
        m_response.setContentType(contentType);
      }
      m_response.setContentLength(b.length);
      if(destFileName==null){
        m_response.setHeader("Content-Disposition","attachment;");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -