sharp-fileupload文件存储FileStore(二)

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);
}