【Java__文件上传】web页面同时上传文件和参数

code

@RequestMapping("/uploadFile")
@ResponseBody
public AjaxResult uploadFile(HttpServletRequest request, HttpServletResponse response) throws Exception {
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (!isMultipart) {
return new AjaxResult(0, "isMultipart error");
}
String type = request.getParameter("type");
if (StrUtils.isEmpty(type)) {
return new AjaxResult(0, "type error");
}
boolean isOk = false;
String imgUrl = "";
try {
// FileItem 是表单中的每一个元素的封装 创建一个 FileItem 的工厂类
FileItemFactory factory = new DiskFileItemFactory();
// 创建一个文件上传处理器(装饰设计模式)
ServletFileUpload upload = new ServletFileUpload(factory);
// 解析请求
List<FileItem> items = upload.parseRequest(request);
for (FileItem fileItem : items) {
if (fileItem.isFormField()) {
continue;
}
String savePathDir = request.getServletContext().getRealPath("/upload/" + getExId(request) + "/" + type + "/");
File file = new File(savePathDir);
if (!file.exists()) file.mkdir();
String fileName = UUID.randomUUID() + fileItem.getName().substring(fileItem.getName().lastIndexOf("."));
fileItem.write(new File(savePathDir + fileName));
imgUrl = request.getContextPath() + "/upload/" + getExId(request) + "/" + type + "/" + fileName;
isOk = true;
break;
}
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage());
return AjaxResult.fail();
}
AjaxResult ajaxResult = AjaxResult.success();
if (isOk) {
ajaxResult.getMap().put("filename", imgUrl);
} else {
ajaxResult.setCode(0);
ajaxResult.setMsg("上传失败");
File file = new File(imgUrl);
if (file.exists()) {
file.delete();
}
}
return ajaxResult;
}
posted @   一只桔子2233  阅读(1256)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示