idea使用commons-fileupload上传文件
文件上传使用的工具:https://commons.apache.org/proper/commons-fileupload/faq.html
文件上传的前提条件:
- form表单method="post"
- form表单enctype="multipart/form-data"
- form表单持有file类型input进行文件选择(二进制数据)
上传案例:
// 1、初始化FileUpload组件
FileItemFactory factory = new DiskFileItemFactory();
/**
* FileItemFactory 用于将前端表单的数据转换为一个个FileItem对象
* ServletFileUpload 则是为FileUpload组件提供Java Web的Http请求解析
*/
ServletFileUpload sf = new ServletFileUpload(factory);
// 2、遍历所有FileItem
try {
List<FileItem> formData = sf.parseRequest(request);
for (FileItem fi : formData){
if (fi.isFormField()){
System.out.println("普通输入项:" + fi.getFieldName() + ":" + fi.getString("UTF-8"));
}else {
System.out.println("文件上传项:" + fi.getFieldName());
// 3、文件保存到服务器目录
//获得文件上传的绝对路径
String path = request.getServletContext().getRealPath("/upload");
// String path = "D:\\Imooc\\week13-14\\mgallery\\web\\upload";//现在只能想到写死,呃
System.out.println("上传文件目录:" + path);
String fileName = UUID.randomUUID().toString();
// fi.getName()得到原始文件名,截取最后一个.后所有字符串,例如:wxml.jpg--> .jpg
String suffix = fi.getName().substring(fi.getName().lastIndexOf("."));
// fi.write()写入目标文件
fi.write(new File(path,fileName+suffix));
}
}
} catch (Exception e) {
e.printStackTrace();
}
使用idea开发,我web有一个upload文件夹,想把图片上传到web下面的upload下,即 D:\Imooc\week13-14\mgallery\web\upload,但是每次上传的地址都是 D:\Imooc\week13-14\mgallery\out\artifacts\mgallery_war_exploded\upload。就是war包下面编译文件中的upload。
解决方法:

把上面的OutPut directory 地址改为web就好了,如下:

真实的上传路径地址就是web下的upload了。
如果你的实在弄不好,又着急的话,那就先写死吧。不过,我相信问题总会解决的,加油啊!
分类:
Java学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了