springMVC上传下载文件

一、上传文件

1.jsp页面上传form表单需配置

enctype="multipart/form-data"

2.Jsp页面定义文件域

<input type="file" name="file"/>

3.后台代码上传方法参数传递

@RequestParam(value="file", required=false) MultipartFile file

4.指定上传文件的路径

//上传文件
//获取文件的绝对路径
String savePath = request.getServletContext().getRealPath("upload");

5.获取文件后缀名

//获取文件名称
int suffixIndex = file.getOriginalFilename().indexOf(".");
String suffixName = file.getOriginalFilename().substring(suffixIndex);

6.生成新的文件名称

7.检测文件

//检测文件是否存在
File targetFile = new File(savePath, newFileName);
if (!targetFile.exists()) {
	//文件不存在则创建文件夹或文件
	targetFile.mkdirs();
}

8.上传文件

// 使用transferTo(dest)方法将上传文件写到服务器上指定的文件。
file.transferTo(targetFile);
				

9.配置spring-mvc.xml上传文件

<!-- 关于文件上传的配置不能少 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="defaultEncoding">
			<value>UTF-8</value>
		</property>
		<property name="maxUploadSize">
			<value>32505856</value><!-- 上传文件大小限制为31M,31*1024*1024 -->
		</property>
		<property name="uploadTempDir">
            <value>/upload/</value><!--上传后的目录名-->
        </property>
		<property name="maxInMemorySize">
			<value>4096</value>
		</property>
	</bean>

二、下载文件

1.jsp页面定义下载链接地址

<a href="userController/downloadPhoto.do?fileName=${u.headPhoto }"></a>

2.后台方法返回值定义ResponseEntity<byte[]>

public ResponseEntity<byte[]> downloadPhoto(){}

3.方法参数定义文件名称

@RequestParam("fileName")String fileName)

4.获取源文件路径

String sourcePath = request.getServletContext().getRealPath(fileName);

5.获取源文件

File sourceFile = new File(sourcePath);

6.定义头部文件信息以及文件名称

HttpHeaders headers = new HttpHeaders();
headers.setContentDispositionFormData("attachment", fileName.substring(7));
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);

7.文件下载

ResponseEntity<byte[]> entity = new ResponseEntity<byte[]>
(FileUtils.readFileToByteArray(sourceFile), headers, HttpStatus.CREATED);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值