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

📄 uploadfile.java

📁 java支持的短信平台
💻 JAVA
字号:
package com.khan.web;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.util.HashMap;


public class uploadFile  {
    public static final int MAX_SIZE = 1024 * 1024*100;
    public static final String FILE_DIR = "d:/temp/";

    private int file_Size=0;
    private String file_Path = "";
    private HashMap hm = new HashMap();

    public String upLoad(HttpServletRequest req) {
        String tmpString ="";
        String result = "";
        DataInputStream dis = null;
        String split_Str = "";

        try {
            dis = new DataInputStream(req.getInputStream());
            String content = req.getContentType();
            if (content != null && content.indexOf("multipart/form-data") != -1) {

                int reqSize = req.getContentLength();
                byte[] data = new byte[reqSize];
                int bytesRead = 0;
                int totalBytesRead = 0;
                int sizeCheck = 0;
                while (totalBytesRead < reqSize) {
                    // check for maximum file size violation
                    sizeCheck = totalBytesRead + dis.available();
                    if (sizeCheck > MAX_SIZE)
                        result = "文件太大不能上传...";

                    bytesRead = dis.read(data, totalBytesRead, reqSize);
                    totalBytesRead += bytesRead;
                }
                String dataString = null;
                //dataString = new String(data, "ISO-8859-1");
                dataString = new String(data);
                tmpString = new String(data);
                hm = parseAnotherParam(tmpString);

                //取出字段分割符
                split_Str = dataString.substring(0, dataString.indexOf("\r\n"));
                // 分离filepath 并赋值
                dataString = dataString.substring(dataString.indexOf("filename=\""));
                String filePath = dataString.substring(0, dataString.indexOf("Content-Type:"));
                if (filePath==null && filePath.equals("")) return "";
                //System.out.println(filePath);
                dataString = new String(dataString.getBytes(),"ISO-8859-1");
                // 分离contentType 并赋值
                dataString = dataString.substring(dataString.indexOf("Content-Type:") + 1);
                dataString = dataString.substring(dataString.indexOf("\n") + 1);
                // 分离文件信息 获得最终想要的字节
//System.out.print("|"+dataString+"|");
                dataString = dataString.substring(2, dataString.indexOf(split_Str));
//System.out.println("|"+dataString+"|");
                dataString = dataString.substring(0, dataString.lastIndexOf("\n") - 1);
//System.out.print("|"+dataString+"|");
                if (writeFile(dataString.getBytes("ISO-8859-1"), FILE_DIR + getFileName(filePath))) {
                    this.file_Size = dataString.getBytes("ISO-8859-1").length;
                    this.file_Path = FILE_DIR + getFileName(filePath);
                    result = "文件上传完毕";
                } else {
                    result = "文件上传失败";
                }
            } else {
                result = "content 必须为 multipart/form-data";
            }
        } catch (UnsupportedEncodingException ex4) {
            result = "getBytes 失败 UnsupportedEncodingException错误";
        } catch (NullPointerException e) {
            result = "getBytes 失败 NullPointerException错误";
        } catch (IOException ex1) {
            result = "IOException 错误 ";
        }

        return result;
    }

    public String getFilePath(){
        return this.file_Path;
    }

    public int getFileSize(){
        return this.file_Size;
    }

    public boolean writeFile(byte[] data, String path) {
        File f = null;
        FileOutputStream fos = null;
        try {
            f = new File(path);
            f.createNewFile();
            fos = new FileOutputStream(f);
            fos.write(data, 0, data.length);
        } catch (FileNotFoundException e) {
            return false;
        } catch (IOException e) {
            return false;
        } finally {
            try {
                fos.close();
            } catch (IOException e) {
                return false;
            }
        }
        return true;
    }

    public String getFileName(String arg) {
        String path = "";
        if (arg.indexOf("\"") > -1)
            path = arg.substring(arg.indexOf("\"") + 1, arg.lastIndexOf("\""));
        else
            path = arg;
    //System.out.println("file_path:"+arg);
        path = path.substring(path.lastIndexOf("\\") + 1);
        return path;
    }


    public HashMap parseAnotherParam(String str){
      HashMap hm= new HashMap();
      String key="";
      String value="";
      int startindex = 0;
      int endindex = 0;

      startindex = str.indexOf("Content-Disposition: form-data; name=\"") + "Content-Disposition: form-data; name=\"".length();
      endindex = str.indexOf("\"\r\n\r\n");

      while ( startindex >-1 && endindex > -1 ){
        key = str.substring(startindex, endindex);

        if(!str.substring(endindex , endindex + 5).equals("\"\r\n\r\n")  ){//去掉没有value的元素
            str = str.substring(endindex);
            startindex = str.indexOf("Content-Disposition: form-data; name=\"") + "Content-Disposition: form-data; name=\"".length();
            endindex = str.indexOf("\"\r\n\r\n");
            continue;
        }
        if( key.indexOf("\";") > -1){//去掉上传文件的参数以及编码
           str = str.substring(str.indexOf("\";") + 2);
           startindex = str.indexOf("Content-Disposition: form-data; name=\"") + "Content-Disposition: form-data; name=\"".length();
           endindex = str.indexOf("\"\r\n\r\n");

           continue;
        } else
            str = str.substring(endindex + 5);

        value = str.substring(0, str.indexOf("\r\n"));
        str = str.substring(str.indexOf("\r\n") + 2);
        //System.out.println("key:"+key+" value:"+value);
        hm.put(key,value);

        startindex = str.indexOf("Content-Disposition: form-data; name=\"") + "Content-Disposition: form-data; name=\"".length();
        endindex = str.indexOf("\"\r\n\r\n");

      }
      return hm;
    }

    public String getParameter(String param){
        //System.out.println(hm.toString());
      return (String)hm.get(param);
    }


}

⌨️ 快捷键说明

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