利用SpringMVC上传文件的Demo

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38409944/article/details/82864542

前言:

文件的上传功能也在网站中发挥着不可替代的作用,这里我就来讲讲简单利用SpringMVC实现文件的上传。

这里我的配置是这样的:

idea+maven+tomcat9+jdk8

我也将该项目的Demo放到了git上,有兴趣的朋友可以看一看:入门用

https://github.com/jjc123/SpringMVC_File_upload

接下来我就来强调里面的细节问题:
必须的内容在springmvc配置文件需要的配置:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="utf-8"/>
        <property name="maxUploadSize" value="10485760000"/>
        <property name="maxInMemorySize" value="40960"/>
    </bean>

它以来的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>

再来的问题就是最重要的了:

为何上传的图片在本地可以显示,使用本地的tomcat打开也可以,但是通过idea打开就是无法显示图片?

网上有人说:DispatcherServlet拦截了所有内容包括静态资源。
可是我的配置并没有使用/拦截所有。

  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.action</url-pattern>
  </servlet-mapping>

那问题出在哪呢?
虚拟目录的问题:
这个问题我尝试了很多解决方法:

第一种:设置tomcat虚拟目录

修改Tomcat目录下的conf文件夹下的server.xml配置文件,在最下方的Host标签中添加如下配置:

<Context docBase = "D:\email" path = "/pic" reloadable = "false">

问题:

这里可以做到idea打开文件的时候输入以下内容可以显示图片:

http://localhost:8080/pic/5.jpg

但是加上项目中显示图片无法访问:

<img src="/pic/6.jpg" width="100" height="100" /><br/>

设置项目虚拟目录在这里插入图片描述

将本地目录映射到项目的虚拟目录,如此就可以通过虚拟目录访问到实际目录。

<img src="/pic/${image}" width="100" height="100" /><br/>

注意:如果有多个file标签,即需要上传多张图片的时候,可以在页面创建多个name相同的type为file的标签,而且name为files 那么Controller方法中的MultipartFile数组前面要加@RequestParam(”files“)注解,表示解析所有名为files的文件资源。

猜你喜欢

转载自blog.csdn.net/qq_38409944/article/details/82864542