首先来看如下效果图片:表单代码:(推荐视频教程:java视频教程) 宠物(或产品)类型: 宠物(或产品)名字: 一句话介绍: 题目: 价钱: 库存: 状态: 在售
首先来看如下效果图片:
表单代码:
(推荐视频教程:java视频教程)
提交表单是采用二进制方式提交,所以一般用来上传图片操作,当在这个表单下同时上传文本,就会报错。但是业务需要上传商品是文本和图片同时上传的,所以这里要用到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) {
System.out.println("文件"+path+"为空");
}
}
}
if(productDaoService.addProduct(product)){
PrintWriter out = response.getWriter();
out.print("");
}else {
PrintWriter out = response.getWriter();
out.print("");
}
}
相关文章教程推荐:java入门教程
--结束END--
本文标题: java实现图片和文本同时提交到表单
本文链接: https://www.lsjlt.com/news/4000.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-03
2024-04-03
2024-04-01
2024-01-21
2024-01-21
2024-01-21
2024-01-21
2023-12-23
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0