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")
publicvoidaddPro(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{
//编码规范
response.setContentType("text/html");
//response.setCharacterEncoding("utf-8");
Productproduct=newProduct();
//这种方法主要通过if(item.isFormField())这个条件判别文件还是非文件
DiskFileItemFactoryfactory=newDiskFileItemFactory();
ServletFileUploadupload=newServletFileUpload(factory);
Listitems=null;
try{
items=upload.parseRequest(request);
}catch(FileUploadExceptione){
e.printStackTrace();
}//解析request请求
Iteratoriter=items.iterator();//遍历表单中提交过来的内容
while(iter.hasNext()){
FileItemitem=(FileItem)iter.next();
if(item.isFormField()){//如果是表单域,就是非文件上传元素
Stringvalue=item.getString("UTF-8");//获取value属性的值,这里需要指明UTF-8格式,否则出现中文乱码问题
if(item.getFieldName().equals("cid")){//对应form中属性的名字
intcategoryId=Integer.parseInt(value);
product.setCategory_id(categoryId);
}elseif(item.getFieldName().equals("cname")){
product.setName(value);
}elseif(item.getFieldName().equals("introduction")){
product.setIntroduction(value);
}elseif(item.getFieldName().equals("title")){
product.setTitle(value);
}elseif(item.getFieldName().equals("price")){
BigDecimalprice=newBigDecimal(value);
product.setPrice(price);
}elseif(item.getFieldName().equals("stock")){
product.setStock(Integer.parseInt(value));
}elseif(item.getFieldName().equals("status")){
product.setStatus(Integer.parseInt(value));
}elseif(item.getFieldName().equals("details")){
product.setDetail(value);
}
}else{
Stringfilename=item.getName();//文件的名字
Stringimgname=filename.substring(0,filename.indexOf("."));//减去“.”后面的字符
//tomcat启动位置
//Stringt1=System.getProperty("user.dir").substring(0,
//System.getProperty("user.dir").length()-4);
Stringpath=request.getServletContext().getRealPath("img");//target找到img位置
Longtime=Calendar.getInstance().getTimeInMillis();//时间戳,保证文件命名不重复
Stringimgurl="./img/"+imgname+time+".jpg";
product.setImage(imgurl);
System.out.println(imgurl);
FilesaveFile=newFile(path+"/"+imgname+time+".jpg");//定义一个file指向一个具体的文件
try{
item.write(saveFile);//把上传的内容写到一个文件中
System.out.println("上传到"+path+"成功");
}catch(Exceptione){
/*e.printStackTrace();*/
System.out.println("文件"+path+"为空");
}
}
}
if(productDaoService.addProduct(product)){
PrintWriterout=response.getWriter();
out.print("alert('ADDSUCCESS');window.location.href='/admin/administrator'");
}else{
PrintWriterout=response.getWriter();
out.print("alert('增加失败');window.location.href='/admin/addProduct'");
}
}
以上就是java实现图片和文本同时提交到表单的详细内容,感谢大家的学习和对毛票票的支持。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。