如标题 上传文件上传docx 文档会报以上的错误 但是上传txt,图片都是可以成功的,代码如下,请问为什么怎么解决 谢谢
//项目绝对路径
String savePath = getSession().getServletContext().getRealPath("/upload");
//上传文件临时缓存路径
String tempPath = getSession().getServletContext().getRealPath("/temp");
HttpSession session = request.getSession();
try{
request.setCharacterEncoding("utf-8");
if(FileUpload.isMultipartContent(requestContext)){
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(new File(tempPath));//设置缓存路径
factory.setSizeThreshold(1024*100);//设置缓冲区的大小为100KB,如果不指定,那么缓冲区的大小默认是10KB
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("utf-8");
upload.setFileSizeMax(1024*1024*1000);//设置单个文件上传大小1000M
upload.setSizeMax(1024*1024*5000);//设置总上传文件大小5000M
upload.setProgressListener(new UploadListener(new UploadStatus(),session));//设置上传进度监听
List<FileItem> items = new ArrayList<FileItem>();
try {
items = upload.parseRequest(request); //****这里开始报错** ******
} catch (FileUploadException e1) {
System.out.println("文件上传发生错误" + e1.getMessage());
}
Iterator<FileItem> it = items.iterator();
while(it.hasNext()){
FileItem fileItem = it.next();
if(fileItem.isFormField()){//文字框
System.out.println(fileItem.getFieldName()+" "+fileItem.getName()+" "+new String(fileItem.getString().getBytes("iso8859-1"), "gbk"));
}else{//文件 流
System.out.println(fileItem.getFieldName() + " " +
fileItem.getName() + " " + fileItem.isInMemory() + " " +
fileItem.getContentType() + " " + fileItem.getSize());
if(fileItem.getName()!=null && fileItem.getSize()!=0){
File fullFile = new File(fileItem.getName());
File parentDic = new File(savePath);
if(!parentDic.exists()){
parentDic.mkdirs();
}
File newFile = new File(savePath+"/" + fullFile.getName());
if(!newFile.exists()){
newFile.createNewFile();
}
try {
fileItem.write(newFile);
renderJson(JsonDTO.success());
} catch (Exception e) {
e.printStackTrace();
renderJson(JsonDTO.fail());
}
}else{
System.out.println("文件没有选择 或 文件内容为空");
renderJson(JsonDTO.fail());
}
}
}