FileStore
依赖 inputStreamStore
,同时实现了inputStreamStore
接口。主要是处理文件文件上传。
方法
- 处理web端文件请求
public List<? extends FileMeta> upload(List<MultipartFile> multipartFileList, String groupName);
- 处理本地文件
public List<? extends FileMeta> storeFiles(List<File> fileList, String groupName)
- 处理byte[]的文件
FileMeta#data是一个字节数组
public List<? extends FileMeta> storeFileMeta(List<? extends FileMeta> fileMetaList, String groupName)
FileMeta.java
@Getter
@Setter
public class FileMeta {
private String name;
private String extension;
private String contentType;
private Long size;
private String groupName;
private String path;
@Transient
@JsonIgnore
private byte[] data;
@Transient
private String url;
/**
* 获取完整名称
* @return
*/
public String getFullName() {
if (StringUtils.isBlank(this.getExtension())) {
return this.getName();
}
return this.getName() + (StringUtils.isEmpty(this.getExtension()) ? "" : "." + this.getExtension());
}
public String getFullPath() {
return this.getGroupName() + "/" + getPath();
}
/**
* 设置完整名称
* @param fullName
*/
public void setFullName(String fullName) {
String fileName = com.rick.common.util.StringUtils.stripFilenameExtension(fullName);
String fileExt = com.rick.common.util.StringUtils.getFilenameExtension(fullName);
setName(fileName);
setExtension(fileExt);
}
}
测试
@Test
public void testStore() throws IOException {
File file = new File("/Users/rick/jkxyx205/tmp/fileupload/demo/1.jpg");
FileMeta fileMeta = FileMetaUtils.parse(file);
fileStore.storeFileMeta(Lists.newArrayList(fileMeta), "upload").get(0);
}