SpringMVC文件上传

1. mavn坐标依赖。

	<!-- 版本锁定 -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <!--spring版本锁定-->
        <spring.version>5.0.2.RELEASE</spring.version>
    </properties>
    <dependencies>
        <!-- junit测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <!-- spring框架-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- servlet-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <!-- jsp-->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>
        
        <!-- 文件上传-->
        <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>
		
		<!-- 文件跨服务器-->
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-core</artifactId>
            <version>1.18.1</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-client</artifactId>
            <version>1.18.1</version>
        </dependency>
    </dependencies>

2. 在SpringMVC主配置文件中添加文件解析器配置。

<!-- 配置文件上传解析器 -->
    <!-- id 的值是固定的-->
    <bean id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 设置上传文件的最大尺寸为 5MB -->
        <property name="maxUploadSize">
            <value>5242880</value>
        </property>
    </bean>

3. 页面。

(
	注意事项:
		1.form表单的method属性值必须为post。
		2.form表单的enctype属性值必须改为multipart/form-data。
		3.图片上传input标签的type属性值必须为file。
)
 <form action="uploadFile" method="post" enctype="multipart/form-data">
        图片上传:<input type="file" name="uploadFile"/><br/>
        <input type="submit" value="上传"/>
 </form>

4. Controller层代码。

(
	注意事项:
		方法的参数uploadFile,必须和前台图片上传的name属性保持一致。
)
	@RequestMapping(value = "uploadFile", method = RequestMethod.POST)
    public String uploadFile(HttpServletRequest request, MultipartFile uploadFile) throws IOException {

        // 1.图片服务器的请求路径
        String basePath = request.getSession().getServletContext().getRealPath("/uploads");
        // 2.获取前台上的传图片的名字
        String oldName = uploadFile.getOriginalFilename();
        // 3.生成随机字符,防止文件重名
        String uuid = UUID.randomUUID().toString().replace("-","").toUpperCase();
        // 4.图片上传到服务器上的名称
        String newName = uuid+"_"+oldName;
        // 5.解决同一文件夹中文件过多问题
        String dataFormat = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
        // 6.判断这个目录文件是否存在
        File file = new File(basePath+"/"+dataFormat);
        if (!file.exists()) {
            file.mkdirs();//不存在就创建这个目录
        }
        // 7.完成上传
        uploadFile.transferTo(new File(file,newName));
        return "success";
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值