上架商品java代码_案例37-后台商品添加的代码实现加入图片上传

packagewww.test.web.servlet;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.util.Date;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.commons.beanutils.BeanUtils;importorg.apache.commons.fileupload.FileItem;importorg.apache.commons.fileupload.disk.DiskFileItemFactory;importorg.apache.commons.fileupload.servlet.ServletFileUpload;importorg.apache.commons.io.IOUtils;importwww.test.domain.Category;importwww.test.domain.Product;importwww.test.service.AdminService;importwww.test.utils.CommonsUtils;public class AdminProductServlet extendsHttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {//目的:收集表单的数据封装一个Product实体 将上传图片存储到服务器磁盘上

Product product = newProduct();//收集数据的容器

Map map = new HashMap();try{//接收文件上传//1 创建磁盘文件项工厂

String path_temp = this.getServletContext().getRealPath("temp");

DiskFileItemFactory factory= new DiskFileItemFactory(1024*1024,newFile(path_temp));//2 创建文件上传核心类

ServletFileUpload upload = newServletFileUpload(factory);//设置上传文件的名称的编码

upload.setHeaderEncoding("UTF-8");//ServletFileUpload的API

boolean multipartContent = upload.isMultipartContent(request); //判断表单是不是文件上传的表单

if(multipartContent){ //是文件上传表单//3 ******解析request---- 获得文件项集合

List parseRequest =upload.parseRequest(request);if(parseRequest!=null){//4 遍历文件项集合

for(FileItem fileItem : parseRequest) {//5 判断是普通表单项/文件上传项

boolean formField =fileItem.isFormField();if(formField){//普通表单项 username = zhangsan

String fieldName =fileItem.getFieldName();

String fieldValue= fileItem.getString("UTF-8");//对普通表单项的内容进行编码//一个一个的存入到容器中 键值对 存储完成之后使用BeanUtils进行封装。

map.put(fieldName, fieldValue);//注意:当表单是enctype="multipart/form-data"时 request.getParameter相关的方法都失效//String parameter = request.getParameter("username");获取不到数据

}else{//文件上传项

String fileName = fileItem.getName();//获取文件名//不同的浏览器提交的文件名是不一样的,有些浏览器提交的文件名是带有路径的,//如:c:\nihao\a.txt,而有些只是单纯的文件名,如:a.txt//处理获取到的上传文件的文件名的路径部分,只保留文件名部分

fileName = fileName.substring(fileName.lastIndexOf("\\")+1);//获得上传文件的内容 也是就获得与文件关联的输入流

InputStream in =fileItem.getInputStream();//获取存储文件的绝对地址

String path_store = this.getServletContext().getRealPath("upload");

OutputStream out= new FileOutputStream(path_store+"/"+fileName); //D:/xxx/xxx/xx/xxx.jpg//上传文件实际上就是复制文件到服务器 直接使用工具类

IOUtils.copy(in, out);//关闭资源

in.close();

out.close();//删除临时文件

fileItem.delete();//将图片的相对地址存储到map容器中,这样就可以直接使用BeanUtils封装到里面去了

map.put("pimage", "upload/"+fileName);

}

}

}//封装

BeanUtils.populate(product, map);//是否product对象封装数据完全,不完全的手动封装//private String pid

product.setPid(CommonsUtils.getUUID());//private Date pdate;

product.setPdate(newDate());//private int pflag;

product.setPflag(0);//private Category category;

Category category = newCategory();

category.setCid(map.get("cid").toString());

product.setCategory(category);//将封好的product传递给service层

AdminService service = newAdminService();

service.saveProduct(product);

}else{//不是文件上传表单//使用原始的表单数据的获取方式

}

}catch(Exception e) {//TODO: handle exception

e.printStackTrace();

}

}public void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {

doGet(request, response);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值