SSM框架系列学习总结11之SpirngMVC 文件上传

  1. 表单中的组件type=”file”
    image.png
    <input type="file" name="pictureFile"/>

2.如果要上传文件, 那么必须在form表单中添加如下属性enctype=”multipart/form-data”告诉服务器,并且method属性值必须为post, 传递给后台的数据是个文件而不是字符串
image.png

<form id="itemForm" action="${pageContext.request.contextPath}/updateItems.do"
      enctype="multipart/form-data" method="post">
</form>

3.需要在springmvc.xml文件中配置一个文件解析器
image.png

    <!-- 文件上传 -->
    <bean id="multipartResolver"
          class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 设置上传文件的最大尺寸为5MB -->
        <property name="maxUploadSize">
            <value>5242880</value>
        </property>
        <property name="defaultEncoding">
            <value>UTF-8</value>
        </property>
    </bean>
  1. 文件上传需要导入文件上传的jar包
    image.png

  2. 在Controller方法中进行图片参数的绑定
    image.png

    // 修改信息
    @RequestMapping(value = "/updateItems.do")
    public String updateItems(Model model,                           
                              @RequestParam("pictureFile") MultipartFile pic) throws Exception {
  1. 在tomcat中绑定一个虚拟路径, 真正路径是本地的磁盘。在tomcat的server.xml文件中的标签下添加,然后只需要将图片上传到E盘下的temp目录即可

image.png

切记:不要把图片上传到工程目录 ,不方便进行工程维护。实际电商项目中使用专门图片服务器(比如apache、tomcat)。本教程使用图片虚拟目录,通过虚拟目录访问硬盘上存储的图片目录。

我用的是开发工具为IDEA,虚拟目录的设置为
在tomcat服务器配置中, 加入存放图片的文件夹, 在右边的访问写上路径.
image.png

image.png

效果:
image.png

  1. 具体的上传代码
    在对应的Controller方法里添加
// 下面是图片上传的代码
if (!pic.isEmpty()) {
    // 得到图片的原始文件名
    String originalName = pic.getOriginalFilename();
    // 指定带盘符的路径, 物理路径
    String realPath = "E:\\temp\\";
    /*
        为了处理出现重名现象, 将原始文件名去掉,
        通过UUID算法生成新的文件名
     */
    String uuidName = UUID.randomUUID().toString();
    // uuid名称加上文件的后缀名
    String newFile = uuidName + originalName.substring(originalName.lastIndexOf("."));
    // 创建File文件
    File file = new File(realPath + newFile);
    // 将图片写入到具体的位置
    pic.transferTo(file);
    // 将文件名保存到数据库
    items.setPic(newFile);


}

完整代码地址

https://github.com/menglanyingfei/SSMLearning/blob/master/jar%E5%8C%85/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0.zip
https://github.com/menglanyingfei/SSMLearning/tree/master/SSM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值