java中怎么将图片和文本同时提交到表单

今天就跟大家聊聊有关java中怎么将图片和文本同时提交到表单,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

目前累计服务客户1000多家,积累了丰富的产品开发及服务经验。以网站设计水平和技术实力,树立企业形象,为客户提供成都网站建设、网站建设、网站策划、网页设计、网络营销、VI设计、网站改版、漏洞修补等服务。创新互联始终以务实、诚信为根本,不断创新和提高建站品质,通过对领先技术的掌握、对创意设计的研究、对客户形象的视觉传递、对应用系统的结合,为客户提供更好的一站式互联网解决方案,携手广大客户,共同发展进步。

表单代码:



 宠物(或产品)类型:

 宠物(或产品)名字:

 一句话介绍:

 题目:

 价钱:

 库存:

 状态:   在售   下架   删除  

 头像设置:  
 
 详细描述(编辑完需要在文本框右上角点保存):
    

商品详细描述

  

编辑完需要在文本框右上角点保存

 


 

提交表单是采用二进制方式提交,所以一般用来上传图片操作,当在这个表单下同时上传文本,就会报错。但是业务需要上传商品是文本和图片同时上传的,所以这里要用到commons的四个包,使用Maven导入,如下:



 

  commons-io

  commons-io

  2.4

 

 

 

  commons-fileupload

  commons-fileupload

  1.3.3

 

 

 

  commons-collections

  commons-collections

  3.1

 

 

 

  commons-beanutils

  commons-beanutils

  1.9.2

 

Java代码如下:

主要判断每一个参数的属性,图片的则进行图片处理,文本则进行文本处理。

//新增产品

 @RequestMapping("/addPro")

 public void addPro(HttpServletRequest request, HttpServletResponse response) throws IOException {

  //编码规范

  response.setContentType("text/html");

//  response.setCharacterEncoding("utf-8");

  Product product = new Product();

 

  //这种方法主要通过if (item.isFormField())这个条件判别文件还是非文件

  DiskFileItemFactory factory = new DiskFileItemFactory();

  ServletFileUpload upload = new ServletFileUpload(factory);

  List items = null;

  try {

   items = upload.parseRequest(request);

  } catch (FileUploadException e) {

   e.printStackTrace();

  } // 解析request请求

  Iterator iter = items.iterator();// 遍历表单中提交过来的内容

  while (iter.hasNext()) {

   FileItem item = (FileItem) iter.next();

   if (item.isFormField()) { // 如果是表单域 ,就是非文件上传元素

    String value = item.getString("UTF-8"); // 获取value属性的值,这里需要指明UTF-8格式,否则出现中文乱码问题

    if (item.getFieldName().equals("cid")) {// 对应form中属性的名字

     int categoryId = Integer.parseInt(value);

     product.setCategory_id(categoryId);

    } else if (item.getFieldName().equals("cname")) {

     product.setName(value);

    }else if (item.getFieldName().equals("introduction")) {

     product.setIntroduction(value);

    }else if (item.getFieldName().equals("title")) {

     product.setTitle(value);

    }else if (item.getFieldName().equals("price")) {

     BigDecimal price=new BigDecimal(value);

     product.setPrice(price);

    }else if (item.getFieldName().equals("stock")) {

     product.setStock(Integer.parseInt(value));

    }else if (item.getFieldName().equals("status")) {

     product.setStatus(Integer.parseInt(value));

    }else if (item.getFieldName().equals("details")) {

     product.setDetail(value);

    }

   }else {

    String filename = item.getName(); // 文件的名字

 

    String imgname = filename.substring(0, filename.indexOf(".")); //减去“.”后面的字符

 

    //tomcat启动位置

//    String t1 = System.getProperty("user.dir").substring(0,

//      System.getProperty("user.dir").length() - 4);

 

    String path = request.getServletContext().getRealPath("img"); //target找到img位置

    Long time = Calendar.getInstance().getTimeInMillis(); //时间戳,保证文件命名不重复

    String imgurl = "./img/"+imgname+time+".jpg";

    product.setImage(imgurl);

    System.out.println(imgurl);

    File saveFile = new File(path+"/" + imgname+time+".jpg"); // 定义一个file指向一个具体的文件

    try {

     item.write(saveFile);// 把上传的内容写到一个文件中

     System.out.println("上传到"+path+"成功");

    } catch (Exception e) {

     /* e.printStackTrace(); */

     System.out.println("文件"+path+"为空");

    }

   }

  }

 

  if(productDaoService.addProduct(product)){

   PrintWriter out = response.getWriter();

   out.print("alert('ADD SUCCESS');window.location.href='/admin/administrator'");

  }else {

   PrintWriter out = response.getWriter();

   out.print("alert('增加失败');window.location.href='/admin/addProduct'");

  }

 }

看完上述内容,你们对java中怎么将图片和文本同时提交到表单有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


当前文章:java中怎么将图片和文本同时提交到表单
标题URL:http://pwwzsj.com/article/gcgdcj.html

其他资讯