bootstrap-fileinput分片上传
bootstrap-fileinput是基于bootstrap的文件上传插件,在5.0版本中新增了分片上传功能,注意,一定要大于等于5.0的版本才有分片上传的功能!对于需要上传大文件,但是NG网关又无法放开包大小限制的情况,就可以使用分片上传。
开启分片上传
使用分片上传功能需要在bootstrap-fileinput的初始化中加入以下配置:
enableResumableUpload: true,
resumableUploadOptions: {
testUrl: "/site/test-file-chunks",
chunkSize: 1024, // 1 MB chunk size
},
其中resumableUploadOptions
是可选的。testUrl
用来配置获取已完成上传分片编号的地址,如果需要断点续传则配置,不需要可不配置。chunkSize
用来配置分片大小,默认是2MB。
服务端代码
分片上传模式下,服务端处理器的参数和返回值与直接上传有所不同。以抓娃为例,参数如下:
public class ChunkUploadParamVO {
private String fileId; //文件ID,格式:文件大小_文件名
private String fileName; //文件名
private String fileRelativePath; //文件路径
private long chunkIndex; //分片编号
private long fileSize; //文件大小
private long chunkSize; //分片大小
private long chunkSizeStart; //分片偏移字节数
private long chunkCount; //总分片数
private long retryCount; //重试次数
private MultipartFile fileBlob; //分片内容
}
分片上传响应结构示例:
public class ChunkUploadResultVO {
private long chunkIndex; //已上传完成分片编号
private String error; //错误信息
}
另外需要注意的是分片并不是严格按顺序到达服务端的,所以依赖当前分片编号与总分片数判断文件是否上传完是不可靠的。
附录:
- 文档:https://plugins.krajee.com/file-input#ajax-resumable
- demo:https://plugins.krajee.com/file-resumable-uploads-demo