关于使用Common-FileUpload 组件上传的疑惑
发现,文件在1~5MB 之间可以捕获到异常,并forward 回index.jsp 显示错误信息。
但是,如果文件大于5MB 浏览器则提示“The connection was reset.”,根本无法做任何处理。
JSP 和响应的Servlet 的源码如下,工程源码链接: https://pan.baidu.com/s/1jHAQGgY 密码: 8y6t
请问这是怎么回事呢?
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Upload Page 00</title>
</head>
<body>
<h3 style="color:red">${message }</h3>
<form action="uploadServlet00" method="post" enctype="multipart/form-data">
File:<input type="file" name="file"/><br />
Desc:<input type="text" name="desc"/><br />
<input type="submit" value="Submit"/>
</form>
</body>
</html>
UploadServlet00.java
package com.abc.upload.servlet;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
@WebServlet("/uploadServlet00")
public class UploadServlet00 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();
// Set factory constraints
factory.setSizeThreshold(1024 * 500);
ServletContext servletContext = this.getServletConfig().getServletContext();
// 临时文件夹设置为Tomcat 的work 目录,最终文件也保存到那里。
File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir");
factory.setRepository(repository);
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// 设置单个文件的大小,这里设置单个文件不超过1MB
upload.setFileSizeMax(1024 * 1024);
// Set overall request size constraint
// 设置文件上传的总大小,这里设置为5MB
upload.setSizeMax(1024 * 1024 * 5);
try {
// Parse the request
// 解析客户端请求
List<FileItem> items = upload.parseRequest(request);
// Process the uploaded items
Iterator<FileItem> iter = items.iterator();
while (iter.hasNext()) {
FileItem item = iter.next();
// 判断是普通域还是文件域,交由不同方法处理
if (item.isFormField()) {
processFormField(item);
} else {
processUploadedFile(item);
}
}
request.setAttribute("message", "Upload successfully!");
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("message", e.getMessage());
}
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
private void processFormField(FileItem item) {
// Process a regular form field
if (item.isFormField()) {
String name = item.getFieldName();
String value = item.getString();
System.out.println(name + ": " + value);
}
}
private void processUploadedFile(FileItem item) throws Exception {
// Process a file upload
if (!item.isFormField()) {
String fieldName = item.getFieldName();
String fileName = item.getName();
String contentType = item.getContentType();
long sizeInBytes = item.getSize();
System.out.println(fieldName);
System.out.println(fileName);
System.out.println(contentType);
System.out.println(sizeInBytes);
fileName = this.getServletContext().getAttribute("javax.servlet.context.tempdir") + "/" + fileName;
item.write(new File(fileName));
}
}
}
相关推荐
javaweb文件上传和下载简易说明
javaweb文件上传和下载简易说明 本文摘录于网络,只是做学习备份之用,绝无抄袭之意,有疑惑请联系本人!,本文参考如下文章: 参考文章(原文):https://www.cnblogs.com/xdp-gacl/p/4200090.html 文章(带源代码):https://blog.csdn.net/zhao2508/article/details/112874498 整体效果如下: 登录功能请看文章:https://blog.csdn.net/chengdong1314/article/details
正交拉丁超立方(OLHC)分组与实验设计(DOE)评估的优化Python实现.rar
正交拉丁超立方(OLHC)分组与实验设计(DOE)评估的优化Python实现.rar
Java微服务如何拆解审计日志查询服务
标题:Java微服务如何拆解审计日志查询服务 内容概要:围绕缓存策略、任务调度、回压控制和审计追踪,拆解Java微服务如何拆解审计日志查询服务的实现细节。 xdronline.com xdrea.com 9g.xinmei6.com xinghaohuanbao.com m.xiker66.com
港股十档行情tick数据涵盖逐笔成交与委托,记录每笔买卖价格、成交量及挂单明细 逐笔数据包含成交时间、价格、股数、成交方向,委托数据展示买一至买十、卖一至卖十的价格与数量
港股十档行情tick数据涵盖逐笔成交与委托,记录每笔买卖价格、成交量及挂单明细。逐笔数据包含成交时间、价格、股数、成交方向,委托数据展示买一至买十、卖一至卖十的价格与数量。分钟数据汇总每分钟开盘价、最高价、最低价、收盘价、成交量及成交额。历史行情覆盖近十五年,字段清晰完整,便于回溯分析。 数据源:CMES金融数据库
MO-372A_PQFP-F6_I1p27-R3p8x4p48Z1p1-N5p5C1p24.stp
MO-372A_PQFP-F6_I1p27-R3p8x4p48Z1p1-N5p5C1p24.stp


Web 开发
