关于javaweb开发中的文件上传

关于文件和图片上传

  1. 需要在form表单中配置enctype="multipart/form-data"
  2. 表单中关于上传文件的input域name属性不能和实体类中的对应文件路径的属性名一样。
  3. 在控制层(controller)中要用到Mulitpart类

4.Form表单中控制文件上传的input域应该与MultipartFile声明的对象名字(上面的file)一样

例如:

在form表单中实现文件上传组件的input域中name=”file”

而在实体类中(数据库中)负责存储文件路径的是boxorder属性

是为什么呢?

因为,你的控制文件上传的input域中是要实现一个MultipartFile类型的数据,这个数据应该传递给MulitpartFile类型的file参数,所以input中的name属性因该与声明的MultipartFile类型的参数名一致,而对于selfbox对象中没有传入boxorder的值,这样我们可以在程序中用boxorder的set方法设置orderbox的值,让他是图片的途径+图片名,这样就可以实现将文件传入服务器中,数据库中只保留文件路径

下面附上完整代码:

Model:

public class Selfbox {

      private String id;

      private String phone;

      private String linkman;

      private String yardadress;

     

      private String self_city;

      public Integer getCheck_height() {

           return check_height;

      }

      public void setCheck_height(Integer check_height) {

           this.check_height = check_height;

      }

      public String getSelf_city() {

           return self_city;

      }

      public void setSelf_city(String self_city) {

           this.self_city = self_city;

      }

      public Integer getClass_east_west() {

           return class_east_west;

      }

      public void setClass_east_west(Integer class_east_west) {

           this.class_east_west = class_east_west;

      }

      private String boxorder;

      private String arrage_id;

      private Integer flag;

      private Integer check_height;

      private Integer class_east_west;

      public String getId() {

           return id;

      }

      public void setId(String id) {

           this.id = id;

      }

      public String getPhone() {

           return phone;

      }

      public void setPhone(String phone) {

           this.phone = phone;

      }

      public String getLinkman() {

           return linkman;

      }

      public void setLinkman(String linkman) {

           this.linkman = linkman;

      }

 

      public String getYardadress() {

           return yardadress;

      }

      public void setYardadress(String yardadress) {

           this.yardadress = yardadress;

      }

      public String getBoxorder() {

           return boxorder;

      }

      public void setBoxorder(String boxorder) {

           this.boxorder = boxorder;

      }

      public String getArrage_id() {

           return arrage_id;

      }

      public void setArrage_id(String arrage_id) {

           this.arrage_id = arrage_id;

      }

      public Integer getFlag() {

           return flag;

      }

      public void setFlag(Integer flag) {

           this.flag = flag;

}

Controller层:

@Controller

@RequestMapping("/selfbox")

public class SelfboxController {

      

       @Autowired

       private SelfboxService selfboxService;

       public SelfboxService getSelfboxService() {

              return selfboxService;

       }

       public void setSelfboxService(SelfboxService selfboxService) {

              this.selfboxService = selfboxService;

       }

       @Value("#{sysconfig['file.folder']}")

       private String fileFolder;

      

       @RequestMapping(value="/insertbox")

       @ResponseBody

       public MyResult insertbox( MultipartFile file,Selfbox selfbox,HttpServletRequest request) throws IOException{

              try {

                     selfbox.setId(UUID.randomUUID().toString());

                     if(!file.isEmpty())

                     {

                            //上传文件

                            //上传地址

                            String path = request.getSession().getServletContext().getRealPath("/file");

                            //获取文件名

                            String boxorder_name = file.getOriginalFilename();

                            //获取文件的后缀名

                            String extensionName = boxorder_name.substring(boxorder_name.lastIndexOf(".")+1);

                            //获得id

                            String id = selfbox.getId();

                            //设置文件上传后的名称

                            String newfile = id+"."+extensionName;

                            //文件的传输保存

                            file.transferTo(new File(fileFolder + "/pdf/returnNote/"+newfile));

                            //把文件路径保存到数据库

                            selfbox.setBoxorder(newfile);                          

                     }

                     selfboxService.insertSelfbox(selfbox);

                     return new MyResult(1, "已成功添加箱安排!");

              } catch (RuntimeException e) {

                    

                     return new MyResult(0, "添加箱安排失败!");

              }

       }

Form表单

<form id="ZIBEI_form" method="post" enctype="multipart/form-data">

       <input name="class_east_west" type="hidden">

       <input name="arrage_id" type="hidden" />     

      

       <table style="padding:10px;">

              <tr>

                     <td align="right" style="70px">箱型箱量:</td>

                     <td><span  class="containerTypeAndQuantity"></span></td>

                     <td colspan="3"><label>TEUs:</label>

                            <span class="needsTeus"  style="color:red" ></span>/<span class="destTeus"></span>

                     </td>

              </tr>

              <tr><td colspan="4"><hr/></td></tr>

              <tr>

                     <td align="right">空重箱:</td>

                     <td colspan="3">

                            <input type="radio" name="check_height" value="0" checked="checked" style="20px;" checked /><label>空</label>

                            <input type="radio" name="check_height" value="1"  style="20px;" /><label>重</label>

                     </td>

              </tr>

              <tr>

                     <td align="right">自备箱箱型:</td>

                     <td ><input id="ZIBEI_containerType" name="containerTypeCode"  data-options="min:1" /></td>

                     <td align="right">自备箱数量:</td>

                     <td colspan="1">

                            <input id="ZIBEI_quantity" name="quantity" class="easyui-numberspinner"

                                   data-options="min:1" style="50px;"/>

                            <span class="quotaTeus" style="margin-left:10px;"></span>

                           

                     </td>

              </tr>

                    

              <tr><td colspan="4"><hr/></td></tr>

      

              <tr style="margin-top:10px;" id="txcs">

                     <td align="right" id="city">提箱城市:</td>

                     <td><input id="self_city" name="self_city" ></td>

              </tr>

              <tr style="margin-top:10px;" id="txdznr">

                     <td align="right" id="txdztext">提箱堆场地址:</td>

                     <td><input id="yardadress" name="yardadress" ></td>

              </tr>

              <tr>

                     <td align="right" id="flag">是否有还箱指令:</td>

                     <td colspan="3">

                            <input type="radio" name="flag" value="0" checked="checked" style="20px;" checked /><label>否</label>

                            <input type="radio" name="flag" value="1"  style="20px;" /><label>是</label>

                     </td>

              </tr>

              <tr id="txdnr">

                     <td align="right" id="txdtext">提箱单:</td>

                     <td>

                     <input class="easyui-filebox" id="txd" name="file" data-options="prompt:'请选择文件'"

                                   style="100%">

                     </td>

              </tr>

              <tr>

                     <td align="right">联系人:</td>

                     <td><input class="easyui-textbox" id="dclxr" name="linkman"></td>

 

              </tr>

              <tr>

                     <td align="right">电话:</td>

                     <td>

                     <input class="easyui-textbox" id="bgdh" name="phone">

                     </td>

 

              </tr>

 

              <tr><td colspan="4">&nbsp;</tr>

             

       </table>

 

</form>

</div>

Form表单是利用easyui和ajax提交的,我也不是太会,等以后会了再说吧

原文地址:https://www.cnblogs.com/shendaxia1/p/9437204.html