springboot多文件上传
MultipartFile提供了以下方法来获取上传文件的信息:
getOriginalFilename,获取上传的文件名字;
getBytes,获取上传文件内容,转为字节数组;
getInputStream,获取一个InputStream;
isEmpty,文件上传内容为空,或者根本就没有文件上传;
getSize,文件上传的大小。
transferTo(File dest),保存文件到目标文件系统;
同时上传多个文件,则使用MultipartFile数组类来接受多个文件上传:
//多文件上传 @RequestMapping(value = "/batch/upload", method = RequestMethod.POST)
@ResponseBody public String handleFileUpload(HttpServletRequest request){
ListMultipartFile files = ((MultipartHttpServletRequest) request)
.getFiles("file");
MultipartFile file = null;
BufferedOutputStream stream = null;
for (int i = 0; i files.size(); ++i) {
file = files.get(i);
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
stream = new BufferedOutputStream(new FileOutputStream(
new File(file.getOriginalFilename())));
stream.write(bytes);
stream.close();
} catch (Exception e) {
stream = null;
return "You failed to upload " + i + " = " + e.getMessage();
}
} else {
return "You failed to upload " + i
+ " because the file was empty.";
}
}
return "upload successful";
}
可以通过配置application.properties对SpringBoot上传的文件进行限定默认为如下配置:
spring.servlet.multipart.enabled=true
spring.servlet.multipart.file-size-threshold=0
spring.servlet.multipart.location=
spring.servlet.multipart.max-file-size=1MB
spring.servlet.multipart.max-request-size=10MB
spring.servlet.multipart.resolve-lazily=false
enabled默认为true,既允许附件上传。
file-size-threshold限定了当上传文件超过一定长度时,就先写到临时文件里。有助于上传文件不占用过多的内存,单位是MB或KB,默认0,既不限定阈值。
location指的是临时文件的存放目录,如果不设定,则web服务器提供一个临时目录。
max-file-size属性指定了单个文件的最大长度,默认1MB,max-request-size属性说明单次HTTP请求上传的最大长度,默认10MB.
resolve-lazily表示当文件和参数被访问的时候再被解析成文件。
Springboot使用ftp进行文件上传下载
首先要在阿里云ECS上搭建ftp服务器,默认是有vsftpd ,它是 Linux 下的一款小巧轻快、安全易用的 FTP 服务器软件。
用下面命令查看是否安装了vsftpd,阿里云ECS默认是安装好的,如果没有参考网上文章安装。
新建用户ftpuser:
useradd ftpuser -d /home/ftpfile
设置用户密码:
passwd ftpuser
多数教程里面使用的标准的ftp maven依赖:
但是我使用的是阿里云的ECS上安装的ftp,在进行连接的时候他提示协议不正确,需要使用sftp,所以maven依赖换成了:
springboot zip文件上传无法解压
解决方法如下:
1、使用xshell登录服务器。
2、安装lrzsz软件。
3、使用rz-y命令然后进行文件上传。
4、使用sz命令下载,命令格式如下,之后就可以重新试一下文件上传后能不能解压。
springboot怎么解决文件上传慢
1、首先在运行中输入gpedit.msc,点击回车后即可打开“组策略对象编辑器”。
2、其次进入组策略对象编辑器界面之后,点击“计算机配置”,然后点击“管理模板”接着继续点击“网络”,再点击“QoS数据包计划程序”。
3、然后进入QoS数据包计划程序见界面之后,点击“限制可保留带宽”,并将其设置为“已启”。
4、最后在展开的界面中选择“带宽限制(%)”栏,并将带宽值“20”设置为“0”,这样就可以解决上传速度慢的情况了。
SpringBoot + SFTP 实现文件上传与下载实战
SFTP介绍
实战
1. 相关依赖(基于SpringBoot)
2. 相关配置
3. 将application.properties中配置转为一个Bean
4. 将上传下载文件封装成Service
5. 上传文件
6. 下载文件
7. 删除文件
8. 最后