📄 myfileupload.java~1~
字号:
package com.hope.speedway.shared;
import java.util.*;
import java.io.*;
import org.apache.commons.fileupload.*;
import javax.servlet.http.*;
public class MyFileUpload {
private static final String CONTENT_TYPE = "text/html; charset=GBK";
private int cacheSize = 4 * 1024;
private long fileMaxSize = 5 * 1024 * 1024;
private String tempDir = null;
private String fileSaveDir = null;
private HttpServletRequest request = null;
private HttpServletResponse response = null;
private String[] invalidFileType = {
".jsp", ".java", ".com", ".exe"};
private HashMap forms = new HashMap();
private ArrayList fileName = new ArrayList();
private ArrayList fileSaveName = new ArrayList();
public MyFileUpload(HttpServletRequest request, HttpServletResponse response) {
this.request = request;
this.response = response;
this.response.setContentType(CONTENT_TYPE);
}
public MyFileUpload(HttpServletRequest request, HttpServletResponse response,
long fileMaxSize, String fileSaveDir, String tempDir) {
this(request, response);
this.fileMaxSize = fileMaxSize;
this.fileSaveDir = fileSaveDir;
this.tempDir = tempDir;
}
/**
* 设置上传文件缓存大小(单位:字节),默认为4 * 1024
* @param cacheSize int
*/
public void setCacheSize(int cacheSize) {
this.cacheSize = cacheSize;
}
/**
* 设置上传文件大小(单位:字节),默认为5 * 1024 * 1024
* @param fileMaxSize long
*/
public void setFileMaxSize(long fileMaxSize) {
this.fileMaxSize = fileMaxSize;
}
/**
* 设置上传文件保存目录,绝对路径。
* @param fileSaveDir String
*/
public void setFileSaveDir(String fileSaveDir) {
this.fileSaveDir = fileSaveDir;
}
/**
* 设置上传文件临时目录,绝对路径。
* @param tempDir String
*/
public void setTempDir(String tempDir) {
this.tempDir = tempDir;
}
/**
* 设置上传文件拒绝的文件扩展名,默认为:<br>
* String[] invalidFileType = {".jsp", ".java", ".com", ".exe"}
* 如上传文件的扩展名在此范围内,则该文件的fileSaveName为“no_match”
* @param invalidFileType String[]
*/
public void setInvalidFileType(String[] invalidFileType) {
this.invalidFileType = invalidFileType;
}
/**
* 进行文件上传处理。处理的文件保存在fileName,fileSaveName中,分别保存原文件名和保存文
* 件名。其它form的值以“form_name/form_value”的形式保存在forms中。
* @throws SizeLimitExceededException
* @throws FileUploadException
* @throws Exception
*/
public void upload() throws FileUploadBase.SizeLimitExceededException,
FileUploadException, Exception {
DiskFileUpload fu = new DiskFileUpload();
fu.setSizeMax(this.fileMaxSize);
fu.setSizeThreshold(this.cacheSize);
fu.setRepositoryPath(this.tempDir);
List fileItemList = null;
fileItemList = fu.parseRequest(this.request);
Iterator iter = fileItemList.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (!item.isFormField()) {
String name = this.getFileName(item.getName());
long size = item.getSize();
if (name == null || name.length() == 0 || size == 0) {
fileName.add(name);
fileSaveName.add("no_file");
continue;
}
if (!isValidType(name)) {
fileName.add(name);
fileSaveName.add("no_match");
continue;
}
String saveName = getFileName(name, size, name.length());
item.write(new File(fileSaveDir + saveName));
fileName.add(name);
fileSaveName.add(saveName);
}
else {
if (forms.get(item.getFieldName()) == null ||
( (String) forms.get(item.getFieldName())).length() == 0) {
forms.put(item.getFieldName(), item.getString());
}
else {
forms.put(item.getFieldName(),
( (String) forms.get(item.getFieldName())) + "," +
item.getString());
}
}
}
}
private String getFileName(String fileName) {
return fileName.substring(fileName.lastIndexOf("\\") + 1);
}
private boolean isValidType(String fileName) {
for (int i = 0; i < invalidFileType.length; i++) {
if (fileName.endsWith(invalidFileType[i])) {
return false;
}
}
return true;
}
/**
* 返回上传文件列表,分别保存原文件名。
* @return ArrayList
*/
public ArrayList getFileName() {
return this.fileName;
}
public ArrayList getFileSaveName() {
return this.fileSaveName;
}
public HashMap getForms() {
return this.forms;
}
private String getFileName(String fileName, long size, int len) {
String[] strArr = {
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n",
"o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B",
"C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3",
"4", "5", "6", "7", "8", "9"
};
int length = 20;
String tmpStr = "";
Random rand = new Random();
for (int i = 0; i < length; i++) {
tmpStr += strArr[rand.nextInt(62)];
}
tmpStr += "_" + len + "_" + size;
tmpStr += fileName.substring(fileName.lastIndexOf("."));
return tmpStr;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -