public
void
doGet(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
try
{
System.out.println(
"IP:"
+ request.getRemoteAddr());
DiskFileItemFactory facotry =
new
DiskFileItemFactory();
String tempDir = getServletContext().getRealPath(
"/WEB-INF/temp"
);
facotry.setRepository(
new
File(tempDir));
ServletFileUpload upload =
new
ServletFileUpload(facotry);
upload.setHeaderEncoding(
"UTF-8"
);
upload.setFileSizeMax(
1024
*
1024
*
1024
);
upload.setSizeMax(
2048
*
1024
*
1024
);
boolean
bb = upload.isMultipartContent(request);
if
(!bb) {
return
;
}
List<FileItem> items = upload.parseRequest(request);
String storePath = getServletContext().getRealPath(
"/WEB-INF/upload"
);
for
(FileItem item : items) {
if
(item.isFormField()) {
String fieldName = item.getFieldName();
String fieldValue = item.getString(
"UTF-8"
);
System.out.println(fieldName +
"="
+ fieldValue);
}
else
{
String fileName = item.getName();
if
(fileName==
null
||fileName.trim().equals(
""
)){
continue
;
}
fileName = fileName
.substring(fileName.lastIndexOf(
"\\"
) +
1
);
String newFileName = UUIDUtil.getUUID() +
"_"
+ fileName;
System.out.println(
"上传的文件名是:"
+ fileName);
InputStream in = item.getInputStream();
String savePath = makeDir(storePath, fileName) +
"\\"
+ newFileName;
OutputStream out =
new
FileOutputStream(savePath);
byte
b[] =
new
byte
[
1024
];
int
len = -
1
;
while
((len = in.read(b)) != -
1
) {
out.write(b,
0
, len);
}
in.close();
out.close();
item.delete();
}
}
}
catch
(FileUploadBase.FileSizeLimitExceededException e){
request.setAttribute(
"message"
,
"单个文件大小不能超出5M"
);
request.getRequestDispatcher(
"/message.jsp"
).forward(request,
response);
}
catch
(FileUploadBase.SizeLimitExceededException e){
request.setAttribute(
"message"
,
"总文件大小不能超出7M"
);
request.getRequestDispatcher(
"/message.jsp"
).forward(request,
response);
}
catch
(Exception e) {
e.printStackTrace();
request.setAttribute(
"message"
,
"上传失败"
);
request.getRequestDispatcher(
"/message.jsp"
).forward(request,
response);
}
}
private
String makeDir(String storePath, String fileName) {
int
hashCode = fileName.hashCode();
int
dir1 = hashCode &
0xf
;
int
dir2 = (hashCode &
0xf0
) >>
4
;
String path = storePath +
"\\"
+ dir1 +
"\\"
+ dir2;
File file =
new
File(path);
if
(!file.exists())
file.mkdirs();
return
path;
}
public
void
doPost(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
doGet(request, response);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异