美文网首页
java实现图片和文本同时提交到表单

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

作者: 小人物不说大话 | 来源:发表于2020-03-31 11:56 被阅读0次

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

    首先来看如下效果图片:

    表单代码:

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

    <formaction="/addPro"method="post"enctype="multipart/form-data">

        <a>宠物(或产品)类型:</a><selectid="categoryID"name="cid"></select><br/><br/>

        <a>宠物(或产品)名字:</a><inputtype="text"name="cname"><br/><br/>

        <a>一句话介绍:</a><inputtype="text"name="introduction"><br/><br/>

        <a>题目:</a><inputtype="text"name="title"><br/><br/>

        <a>价钱:</a><inputtype="text"name="price"><br/><br/>

        <a>库存:</a><inputtype="text"name="stock"><br/><br/>

        <a>状态:</a><selectname="status">

            <optionvalue="1">在售</option>

            <optionvalue="2">下架</option>

            <optionvalue="3">删除</option>

        </select><br/><br/>

        <a>头像设置:</a><inputtype="file"οnchange="previewFile()"name="fileName">

        <br/>

        <imgsrc="${data.image}"alt="Image preview"/><br/>

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

        <divid="editor">

            <p>商品详细描述</p>

            <p>编辑完需要在文本框右上角点保存</p>

        </div><inputtype="hidden"name="details"id="detail"><br/><br/>

        <inputtype="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")

        publicvoid addPro(HttpServletRequest request, HttpServletResponse response) throws IOException {

            //编码规范

            response.setContentType("text/html");

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

            Product product = newProduct();

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

            DiskFileItemFactory factory = newDiskFileItemFactory();

            ServletFileUpload upload = newServletFileUpload(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);

                    } 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")) {

                        BigDecimal price=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{

                    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 = newFile(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实现图片和文本同时提交到表单

          本文链接:https://www.haomeiwen.com/subject/hohwuhtx.html