未进化的程序猿
人生最苦痛的是梦醒了无路可走。做梦的人是幸福的;倘没有看出可走的路,最要紧的是不要去惊醒他。鲁迅

1. 配置虚拟目录

1)、在tomcat上配置图片虚拟目录,在tomcat下conf/server.xml中添加:

<Context docBase="D:\develop\upload\temp" path="/pic" reloadable="false"/>

访问http://localhost:8080/pic即可访问D:\develop\upload\temp下的图片。

2)、也可以通过eclipse配置,如下图:

 

3)、复制一张图片到存放图片的文件夹,使用浏览器访问测试效果,如下图:

2. 加入jar包

1)、实现图片上传需要加入的jar包,如下图

基于jar的方式导入

 基于maven的方式导入依赖

<!-- 文件上传需要导入的坐标依赖 -->
<dependency>
     <groupId>commons-fileupload</groupId>
     <artifactId>commons-fileupload</artifactId>
     <version>1.3.1</version>
</dependency>

<dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
</dependency>    

3. 配置上传解析器

 <bean id="commonsMultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--上传文件的编码类型-->
        <property name="defaultEncoding" value="utf-8"></property>
        <!--上传单个文件的大小-->
        <property name="maxUploadSizePerFile" value="50000000"></property>
        <!--上传文件的总大小-->
        <property name="maxUploadSize" value="54288600"></property>
    </bean>

4. jsp页面修改

1)、在商品修改页面,打开图片上传功能,如下图:

 2)、设置表单可以进行文件上传,如下图:

5. 图片上传

1)、在更新商品方法中添加图片上传逻辑

@RequestMapping(value = "/updateItem")
    public String updateItem(Items items,MultipartFile pictureFile) throws IllegalStateException, IOException {
        // 图片上传
        // 设置图片名称,不能重复,可以使用uuid
        String picName = UUID.randomUUID().toString();

        // 获取文件名
        String oriName = pictureFile.getOriginalFilename();
        // 获取图片后缀
        String extName = oriName.substring(oriName.lastIndexOf("."));

        // 开始上传
        pictureFile.transferTo(new File("D:/uploader/" + picName + extName));

        // 设置图片名到商品中
        items.setPic(picName + extName);

        service.updateItem(items);
        return "redirect:/items/queryItemsList";
    }

2)、效果,如下图:

 

posted on 2020-11-30 18:44  甘茂旺  阅读(206)  评论(0编辑  收藏  举报