springboot文件上传下载

本文介绍了SpringBoot中实现文件上传下载的功能及其注意事项,包括添加Maven依赖、防止同名文件覆盖的方法,以及处理中文文件名乱码的问题。在SpringCloud环境下,通过配置server.undertow.uri-encoding=UTF-8解决乱码,而在通过网关处理请求时,需添加/zuul/前缀。同时,文章提到了文件大小控制和批量下载文件打包成压缩文件的多线程实现。
摘要由CSDN通过智能技术生成

文件上传下载是web服务经常使用的功能。但实际使用过程中,也有一些需要注意的地方。本文结合实际代码说明一下。

1.添加maven依赖:

<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3.2</version>
		</dependency>
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.5</version>
		</dependency>

2.单个文件上传。即将本地的文件以流的方式写入到服务器的一个目录下。

   

 @RequestMapping(value = "/fileUpload", method = RequestMethod.POST)
    @ApiOperation(value = "附件上传", notes = "附件上传")
    public ResultDto fileUpload(@ApiParam(value = "附件") @RequestParam("file") MultipartFile file) {
        return fileService.fileUpload(file );
    }
fileService里的关键代码(使用郑国龙提供的文件服务):

          项目原因不贴了。或者晚点贴


注意事项:1.为了防止同名文件被覆盖。每个文件必须有对应的UUID生成的文件名,作为上传文件名。

                  2.注释1处,在springboot程序里面,在application.properties里配置或者不配置:server.tomcat.uri-encoding=UTF-8 1处都可以获取正常的中文文件名。但是在springcloud的工程里,配置了server.undertow.uri-encoding=UTF-8并没有起作用,而使用注释2就可以正常的获取中文文件名。

        3.使用注释2获取中文文件名后。本地server正常。但是通过网关处理请求的时候,上传之后中文文件名依然是乱码。参考官方文档。对于文件处理类,请求之前加上/zuul/xxxx就可以解决此问题,http://cloud.spring.io/spring-cloud-static/Dalston.SR1/#_uploading_files_through_zuul本来是为了解决上传大文件的,发现中文乱码问题也可以解决。

       4.上传文件要控制文件的大小,通过配置 

spring.http.multipart.max-file-size=10Mb
      spring.http.multipart.max-request-size=10Mb
 或者

spring.servlet.multipart.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值