java图片怎么提交表单_java图片和文本同时提交到表单的实例代码

本文介绍了如何在Java中处理表单提交,特别是当表单包含图片和文本时。通过使用Commons的四个包,包括commons-fileupload,实现了将图片以二进制方式上传,同时处理文本数据。代码示例展示了如何遍历请求中的表单字段,判断文件和文本,并进行相应的处理,如保存图片到服务器并添加到Product对象中。
摘要由CSDN通过智能技术生成

首先来看如下效果图片:

58f927435416300fa65265f1c62c3fc8.png

表单代码:

宠物(或产品)类型:

宠物(或产品)名字:

一句话介绍:

题目:

价钱:

库存:

状态:

在售

下架

删除

头像设置:

Image preview

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

商品详细描述

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

提交表单是采用二进制方式提交,所以一般用来上传图片操作,当在这个表单下同时上传文本,就会报错。但是业务需要上传商品是文本和图片同时上传的,所以这里要用到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("");

}else {

PrintWriter out = response.getWriter();

out.print("");

}

}

以上就是java实现图片和文本同时提交到表单的详细内容,感谢大家的学习和对脚本之家的支持。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值