• springmvc文件上传


    文件上传

    springmvc中对多部件类型解析
    在页面form中提交enctype="multipart/form-data"的数据时,需要springmvc对multipart类型的数据进行解析。
    准备:
    导入上传jar包:commons-fileupload和commons-io
    在springmvc.xml中配置multipart类型解析器
    <!-- 文件上传 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 设置上传文件的最大尺寸为5MB -->
    <property name="maxUploadSize">
    <value>5242880</value>
    </property>
    </bean>
    创建图片的虚拟目录来存储图片(模拟图片服务器)
    通过图形界面配置:



    通过修改tomcat的server.xml配置:
    添加:<Context docBase="F:devlopupload emp" path="/pic" reloadable="false"/>
    配置好后,我们可以通过tomcat服务器使用虚拟路径访问我们的对应图片,如:
    http://localhost:8080/pic/2.jpg
    注意:在图片虚拟目录中,一定将图片目录分级创建(提高i/o性能),一般我们采用按日期(年、月、日)进行分级创建。
    上传图片代码:
    @RequestMapping(...)
    public String editItemsSubmit(Model model, HttpServletRequest request, Integer id, @ModelAttribute("items") @Validated(value={ValidateGroup1.class}) ItemsCustom itemsCustom, BindingResult bindingResult, MultipartFile items_pic) throws Exception{

    //获取错误信息
    if(bindingResult.hasErrors()){
    //输出错误信息
    List<ObjectError> allErrors = bindingResult.getAllErrors();
    for(ObjectError objectError : allErrors){
    //输出错误信息
    System.out.println(objectError.getDefaultMessage());
    }
    }
    //将错误信息传到页面
    model.addAttribute("allErrors",allErrors);

    //可以直接使用model将提交pojo回显到页面
    model.addAttribute("items",itemsCustom);
    //上传图片
    if(items_pic != null){
    //存储图片的物理路径
    String pic_path = "F:\devlop\upload\temp\";
    //原始名称
    String originalFilename originalFilename=items_pic.getOriginalFilename();
    //新的图片名称
    StringnewFileName= UUID。randomUUID()+originalFilename.substring(originalFilename.lastIndexOf("."));

    //试着分级创建一下目录
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(new Date());
    File parents=new File(pic_path+calendar.YEAR+"/"+(calendar.MONTH+1)+"/"+calendar.DAY);
    if(!parents.exisit){
    parents.mkdirs();
    }

    //新图片
    File newFile = new File(parents,newFileName);
    //将内存中的数据写入磁盘
    items_pic.transferTo(newFile);
    //将新图片名称写到itemsCustom中
    itemsCustom.setPic(newFileName);
    }



    //调用service更新商品信息,页面需要将商品信息传到此方法
    itemsService.updateItems(id, itemsCustom);

    return success;
    }
    页面:
    <td>商品图片</td>
    <td>
    <c:if test="${item.pic != null}">
    <img src="/pic/${item.pic}" width=100 height=100 />
    </c:if>
    <input type="file" name="items_pic"/>
    </td>



































  • 相关阅读:
    shell脚本:/bin/sh^M: bad interpreter: No such file or directory。(转)
    Buffer在JDK中的基本说明

    清除版本控制信息针对 SVN
    修改——对密码进行加密
    省市加载javascript
    visual studio 2010 中 javascript 提示文本
    折腾自己的博客样式,自适应两列布局
    给动态加载的图片添加延迟加载(附在线demo)
    44种IE css bug实例测试总结(转载)
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/6277909.html
Copyright © 2020-2023  润新知