📄 uploadfile.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 + -