侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

java实现图片和文本同时提交到表单

Java  /  管理员 发布于 8年前   172

首先来看如下效果图片:

83c39db510724db771ecaf514229d9e.png

表单代码:

(推荐视频教程:java视频教程)

<form action="/addPro" method="post" enctype="multipart/form-data">    <a>宠物(或产品)类型:</a><select id="categoryID" name="cid"></select><br/><br/>    <a>宠物(或产品)名字:</a><input type="text" name="cname"><br/><br/>    <a>一句话介绍:</a><input type="text" name="introduction"><br/><br/>    <a>题目:</a><input type="text" name="title"><br/><br/>    <a>价钱:</a><input type="text" name="price"><br/><br/>    <a>库存:</a><input type="text" name="stock"><br/><br/>    <a>状态:</a><select name="status">        <option value="1">在售</option>        <option value="2">下架</option>        <option value="3">删除</option>    </select><br/><br/>    <a>头像设置:</a><input type="file" οnchange="previewFile()" name="fileName">    <br/>    <img src="${data.image}" alt="Image preview"/><br/>    <a>详细描述(编辑完需要在文本框右上角点保存):</a><br/>    <div id="editor">        <p>商品详细描述</p>        <p>编辑完需要在文本框右上角点保存</p>    </div><input type="hidden" name="details" id="detail"><br/><br/>    <input type="submit" value="新增商品"></form>

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

 <!-- https://mvnrepository.com/artifact/commons-io/commons-io有关图片文本同时上传 -->    <dependency>      <groupId>commons-io</groupId>      <artifactId>commons-io</artifactId>      <version>2.4</version>    </dependency>    <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->    <dependency>      <groupId>commons-fileupload</groupId>      <artifactId>commons-fileupload</artifactId>      <version>1.3.3</version>    </dependency>    <!-- https://mvnrepository.com/artifact/commons-collections/commons-collections -->    <dependency>      <groupId>commons-collections</groupId>      <artifactId>commons-collections</artifactId>      <version>3.1</version>    </dependency>    <!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->    <dependency>      <groupId>commons-beanutils</groupId>      <artifactId>commons-beanutils</artifactId>      <version>1.9.2</version>    </dependency>

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("<script language=\"javascript\">alert('ADD SUCCESS');window.location.href='/admin/administrator'</script>");}else {PrintWriter out = response.getWriter();out.print("<script language=\"javascript\">alert('增加失败');window.location.href='/admin/addProduct'</script>");}}

相关文章教程推荐:java入门教程

以上就是java实现图片和文本同时提交到表单的详细内容,更多请关注其它相关文章!


  • 上一条:
    系统提示javac:找不到文件
    下一条:
    无法安装java运行环境jre
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在java中实现的脱敏工具类代码示例分享(0个评论)
    • zookeeper安装流程步骤(0个评论)
    • 在java中你背的“八股文”可能已经过时了(2个评论)
    • 在php8.0+版本中使用属性来增加值代码示例(3个评论)
    • java 正则表达式基础,实例学习资料收集大全 原创(0个评论)
    • 近期文章
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-11
    • 2018-03
    • 2020-03
    • 2023-05
    • 2023-11
    • 2024-01
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客