String message = ""; //消息提示
try {
if (this.file != null) {
File f = this.getFile();
// 采用时间+UUID的方式随即命名
String stroreName = java.util.UUID.randomUUID().toString()
+ fileFileName.substring(fileFileName.lastIndexOf("."));
//BUG修复
//创建一个DiskFileItemFactory工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(1024*100); //设置缓冲区的大小为100KB,默认是10KB
factory.setRepository(tmpFile); //设置上传时生成的临时文件保存目录
//创建一个文件上传解析器
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8"); //解决上传文件名的中文乱码
upload.setFileSizeMax(1024*1024*10); //设置上传单个文件的大小的最大值10M
upload.setSizeMax(1024*1024*10); //设置上传文件总量的最大值,最大值=同时上传的多个文件的大小的最大值的和,100M
List<FileItem> list = upload.parseRequest(request);
for(FileItem item : list){ // ***程序运行到这一步就直接跳出了***
if(item.isFormField()){
String name = item.getFieldName();
//解决普通输入项的数据的中文乱码问题
String value = item.getString("UTF-8");
//value = new String(value.getBytes("iso8859-1"),"UTF-8");
System.out.println(name + "=" + value);
}else{
String fileSuffixName = fileFileName.substring(fileFileName.lastIndexOf("." ) + 1);
if(fileSuffixName.equals("doc") || fileSuffixName.equals("docx")){
FileInputStream inputStream = new FileInputStream(f);
FileOutputStream outputStream = new FileOutputStream(propath
+ File.separator + stroreName);
byte[] buf = new byte[1024];
int length = 0;
while ((length = inputStream.read(buf)) != -1) {
outputStream.write(buf, 0, length);
}
inputStream.close();
outputStream.flush();
outputStream.close();
MessageFile msgfile = new MessageFile();
msgfile.setFilePath(stroreName);
msgfile.setFileName(this.fileFileName);
msgfile.setCreateDate(new Date());
messageFileService.saveOrUpdate(msgfile);
MessageFile resultfile = messageFileService.findById(msgfile
.getId());
ServletUtil.sendAsJson(response, resultfile.toJSONString());
message = "文件上传成功!";
}
}
}
}
} catch (FileUploadBase.FileSizeLimitExceededException e) {
e.printStackTrace();
request.setAttribute("message", "单个文件超出最大值!!!");
//request.getRequestDispatcher("/message.jsp").forward(request, response);
} catch(FileUploadBase.SizeLimitExceededException e){
e.printStackTrace();
request.setAttribute("message", "上传文件的总的大小超出限制的最大值!!!");
//request.getRequestDispatcher("/message.jsp").forward(request, response);
return;
} catch (Exception e) {
message = "文件上传失败";
e.printStackTrace();
}
request.setAttribute("message",message);
//request.getRequestDispatcher("/message.jsp").forward(request, response);
}