81,091
社区成员
发帖
与我相关
我的任务
分享
public ActionForward execute(ActionMapping mapping, ActionForm form,
final HttpServletRequest request, final HttpServletResponse response)
throws Exception {
ThreadPoolExecutor threadPool = (ThreadPoolExecutor) Executors.newCachedThreadPool();
Properties config = getProperty(config_path);
if (config == null) {
config = loadConfig(config_path);
}
final String tempDir = config.getProperty("tempDir");//存储图片的临时目录
final String photoDir = config.getProperty("photoDir");//照片目录
final String photoUrl = config.getProperty("photoUrl");//照片的URL
final String memorySize = config.getProperty("memorySize");//内存缓冲大小
final String sizeMax = config.getProperty("sizeMax");//文件允许的最大值
final String outTime = config.getProperty("outTime");//设置线程在终止前可以保持空闲的时间限制
threadPool.setKeepAliveTime(Long.parseLong(outTime), TimeUnit.SECONDS);
final PrintWriter out = response.getWriter();
threadPool.execute(new Runnable() {
public void run() {
try {
// 创建磁盘工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
// 设置内存缓冲大小
factory.setSizeThreshold(Integer.parseInt(memorySize));
// 设置临时目录
File file = new File(tempDir);
if(!file.exists()){
file.mkdir();
}
factory.setRepository(file);
// 创建处理工具
ServletFileUpload upload = new ServletFileUpload(factory);
// 设置最大允许的尺寸
int setFileSize = Integer.parseInt(sizeMax);
int fileSize = request.getContentLength();
upload.setSizeMax(setFileSize);
if (fileSize <= setFileSize) {
// 解析
String contentType = request.getContentType();//multipart/form-data; boundary=p89nCm2-NdBgJFcZIdCixdGVgEbKHP
if(contentType == null && "".equals(contentType)){
out.print("File Upload Error");
return;
}
List<FileItem> fileItems = upload.parseRequest(request);
Iterator<FileItem> iter = fileItems.iterator();
for (; iter.hasNext();) {
FileItem fileItem = (FileItem) iter.next();
// 判断FileItem类对象封装的数据是一个普通文本表单字段,还是一个文件表单字段,如果是普通表单字段则返回true,否则返回false
if (fileItem.isFormField()) {
// 当前是一个表单项
out.print("form field : "
+ fileItem.getFieldName() + ", "
+ fileItem.getString());
} else {
// 当前是一个上传的文件
String fileName = fileItem.getName();
File fileDir = new File(photoDir + fileName);
fileItem.write(fileDir);
out.print(photoUrl + fileName);
}
}
} else {
out.print("你上传的文件过大");
}
} catch (Exception e) {
e.printStackTrace();
out.print("File Upload Fail!");
}
}
});
return null;
}