在JSP中使用fileupload上传文件,超出大小限制后,显示连接重置(火狐),或者无法显示此页(IE)

webxvc 2015-08-05 10:03:18
<%@page import="org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException"%>
<%@page import="org.apache.commons.fileupload.FileUploadBase"%>
<%@page import="java.io.File"%>
<%@page import="org.apache.commons.fileupload.*"%>
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'doupload.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
<%
request.setCharacterEncoding("utf-8");
boolean isMultiPart = ServletFileUpload.isMultipartContent(request);
if(isMultiPart){
File tempDir = new File(request.getServletContext().getRealPath("/temp"));
if(!tempDir.exists()){
tempDir.mkdirs();
}
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(5);
factory.setRepository(tempDir);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setFileSizeMax(1024*30);
try{
List<FileItem> fileItems = upload.parseRequest(request);
for(FileItem fileItem : fileItems){
if(fileItem.isFormField()){
String fileName = fileItem.getFieldName();
if(fileName != null && "uname".equals(fileName)){
out.println(fileItem.getString("utf-8")+"上传了文件<br/>");
}
}else{
List<String> allowFileType = Arrays.asList("jpg","jpeg");
String name = fileItem.getName();
String subFileName = name.substring(name.lastIndexOf(".")+1);
if(!allowFileType.contains(subFileName)){
out.println("上传文件失败,服务器只支持jpg、jpeg类型的文件。");
}else{
String savePath = request.getServletContext().getRealPath("/upload");
String newName = UUID.randomUUID().toString()+name.substring(name.lastIndexOf("."));
File file = new File(savePath+"/"+newName);
fileItem.write(file);
out.print("文件上传成功,上传的文件名为:"+name);
}
}
}
}catch(FileSizeLimitExceededException e){
e.printStackTrace();
out.println("文件上传失败,上传文件超出"+upload.getFileSizeMax()/1000+"KB.");
}catch(Exception e){
e.printStackTrace();
}
}
%>
</body>
</html>
...全文
291 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
一枪尽骚丶魂 2017-08-07
  • 打赏
  • 举报
回复
引用 6 楼 qq_29083713 的回复:
引用
[quote=引用 4 楼 u012377333 的回复:] [quote=引用 3 楼 paulorwys 的回复:] [quote=引用 1 楼 u012377333 的回复:] 我也遇到这个问题了,蛋疼啊
解决了吗[/quote] 解决了,修改status的最大访问大小就可以了[/quote] 我想问下怎么解决的?status在哪里修改?[/quote] 我是新建了一个struts.properties文件,在里面修改了最大大小限制

struts.multipart.maxSize=1000000000
qq_29083713 2017-08-05
  • 打赏
  • 举报
回复
引用
引用 4 楼 u012377333 的回复:
[quote=引用 3 楼 paulorwys 的回复:] [quote=引用 1 楼 u012377333 的回复:] 我也遇到这个问题了,蛋疼啊
解决了吗[/quote] 解决了,修改status的最大访问大小就可以了[/quote] 我想问下怎么解决的?status在哪里修改?
qq_29083713 2017-08-05
  • 打赏
  • 举报
回复
引用
u012377333
我想问下怎么解决的?status在哪里修改?
一枪尽骚丶魂 2016-11-10
  • 打赏
  • 举报
回复
引用 3 楼 paulorwys 的回复:
[quote=引用 1 楼 u012377333 的回复:] 我也遇到这个问题了,蛋疼啊
解决了吗[/quote] 解决了,修改status的最大访问大小就可以了
foo1st 2016-11-08
  • 打赏
  • 举报
回复
引用 1 楼 u012377333 的回复:
我也遇到这个问题了,蛋疼啊
解决了吗
一枪尽骚丶魂 2016-01-25
  • 打赏
  • 举报
回复
我也遇到这个问题了,蛋疼啊

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧