SpringMVC 文件上传

本文介绍了一个简单的文件上传流程,包括配置依赖、页面设置、解析器配置及控制器处理等步骤。通过这些步骤,用户可以将文件上传到服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.导入上传所需的jar包,commons-io.jar、commons-fileupload.jar

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

 

2.编写页面,在form中添加 enctype="multipart/form-data"属性

<form action="testUpload" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    描述:<input name="desc" type="text">
    <input type="submit" value="上传">
</form>

3.配置CommonsMultipartResolver,文件上传解析器

<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="prefix" value="/"></property>
	<property name="suffix" value=".jsp"></property>
</bean> 
	
	
<!-- 使@Controller和@RequestMapping注解生效 -->
<mvc:annotation-driven />
<!-- 扫描注解 -->
<context:component-scan base-package="com.ck.controller"/>



<!-- 
配置CommonsMultipartResolver,用于实现文件上传
Ioc容器在初始化的时候,会自动寻找一个id=multipartResolver的bean
-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	<property name="defaultEncoding" value="UTF-8"></property>
	<!-- 上传文件的最大值,单位Byte, -1表示无限值-->
	<property name="maxUploadSize" value="102400"></property>
</bean>

4.controller处理请求

package com.ck.controller;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;



@Controller
public class Usercontroller02 {
	
	@RequestMapping(value="/testUpload")
	public String testUpload(@RequestParam("desc") String desc,@RequestParam("file") MultipartFile file) {
		System.out.println("文件描述信息:" + desc);
		
		InputStream is = null;
		OutputStream out = null;
		try {
                        //得到上传文件的流
			is = file.getInputStream();
			//上传文件名字
			String fileName = file.getOriginalFilename();
                        //new一个输出流
			out = new FileOutputStream(new File("D:\\" + fileName));
			//文件流读写操作
			byte[] bs = new byte[1024];
			int len = 0;
			while((len = is.read(bs)) != -1) {
				out.write(bs, 0, len);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			//关闭输入输出流
			if(is != null) {
				try {
					is.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if(out != null) {
				try {
					out.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return "index";
	}
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值