public String addProduct(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
//1创建hashmap来接收页面的数据
HashMap<String, Object> map =new HashMap<>();
//2创建文件项对象
DiskFileItemFactory fileItemFactory = new DiskFileItemFactory();
//3创建文件上传对象
ServletFileUpload fileUpload = new ServletFileUpload(fileItemFactory);
//4通过文件上传对象解析所有数据,用集合保存
List<FileItem> filelist = fileUpload.parseRequest(request);
//5通过foreach循环遍历集合中的数据
for (FileItem fItem : filelist) {
//判断是否是普通的上传控件
if (fItem.isFormField()) {
map.put(fItem.getFieldName(), fItem.getString("utf-8"));
} else {
// 获取上传组件的名字
String name = fItem.getName();
//为了文件安全,打乱文件的名字
String uuidName = UploadUtils.getUUIDName(name);
//设置文件上传的位置
String path = this.getServletContext().getRealPath("/img2/product/other");
//输入流
InputStream input = fItem.getInputStream();
//输出流
FileOutputStream output = new FileOutputStream(new File(path, uuidName));
//对拷
IOUtils.copy(input, output);
//关闭资源
input.close();
output.close();
//将文件和文件路径存储到map集合里去
map.put(fItem.getFieldName(), "/img2/product/other/" + uuidName);
}
}
//封装product数据
Product product = new Product();
BeanUtils.populate(product, map);
//手动设置product无法自己添加的数据,
product.setPid(UUIDUtils.getId());
product.setPdate(new Date());
Category c = new Category();
c.setCid((String)map.get("cid"));
product.setCategory(c);
ps.addProduct(product);
response.sendRedirect(request.getContextPath()+"/adminProduct?method=findAllProduct");
} catch (Exception e) {
e.printStackTrace();
}
java-web实现文件的上传
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 对于文件上传,浏览器在上传的过程中是将文件以流的形式上传到服务端的。如果直接使用Servlet获取上传文件的输入流...
- 文件上传 文件上传前的准备 在表单中必须有一个上传的控件 因为 GET 方式有请求大小的限制,所以表单的提交方式必...
- java servlet实现服务端:接收文件上传,并保存到服务器 web端测试接口 iOS 使用AFNetwork...