All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.bootx.platform.starter.file.dto.UploadFileDto Maven / Gradle / Ivy

The newest version!
package cn.bootx.platform.starter.file.dto;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Dict;
import lombok.Data;
import lombok.experimental.Accessors;
import org.dromara.x.file.storage.core.FileInfo;
import org.dromara.x.file.storage.core.constant.Constant;

import java.time.LocalDateTime;
import java.util.Map;

/**
 * 上传文件信息
 *
 * @author xxm
 * @since 2022/1/12
 */
@Data
@Accessors(chain = true)
public class UploadFileDto {

    /**
     * 文件id
     */
    private Long id;

    /**
     * 文件访问地址
     */
    private String url;

    /**
     * 文件大小,单位字节
     */
    private Long size;

    /**
     * 文件名称
     */
    private String filename;

    /**
     * 原始文件名
     */
    private String originalFilename;

    /**
     * 基础存储路径
     */
    private String basePath;

    /**
     * 存储路径
     */
    private String path;

    /**
     * 文件扩展名
     */
    private String ext;

    /**
     * MIME 类型
     */
    private String contentType;

    /**
     * 存储平台
     */
    private String platform;

    /**
     * 缩略图访问路径
     */
    private String thUrl;

    /**
     * 缩略图名称
     */
    private String thFilename;

    /**
     * 缩略图大小,单位字节
     */
    private Long thSize;

    /**
     * 缩略图 MIME 类型
     */
    private String thContentType;

    /**
     * 文件所属对象id
     */
    private String objectId;

    /**
     * 文件所属对象类型,例如用户头像,评价图片
     */
    private String objectType;

    /**
     * 文件元数据
     */
    private Map metadata;

    /**
     * 文件用户元数据
     */
    private Map userMetadata;

    /**
     * 缩略图元数据
     */
    private Map thMetadata;

    /**
     * 缩略图用户元数据
     */
    private Map thUserMetadata;

    /**
     * 附加属性字典
     */
    private Dict attr;

    /**
     * 文件的访问控制列表,一般情况下只有对象存储支持该功能,支持 String 或对应存储平台的 ACL 对象
     * 
     * //方式一,通过字符串设置通用的 ACL 详情:{@link Constant.ACL }
     * setFileAcl(ACL.PUBLIC_READ);
     * //方式二,针对指定存储平台设置更复杂的权限控制,以华为云 OBS 为例
     * AccessControlList acl = new AccessControlList();
     * Owner owner = new Owner();
     * owner.setId("ownerid");
     * acl.setOwner(owner);
     * // 保留Owner的完全控制权限(注:如果不设置该权限,该对象Owner自身将没有访问权限)
     * acl.grantPermission(new CanonicalGrantee("ownerid"), Permission.PERMISSION_FULL_CONTROL);
     * // 为指定用户设置完全控制权限
     * acl.grantPermission(new CanonicalGrantee("userid"), Permission.PERMISSION_FULL_CONTROL);
     * // 为所有用户设置读权限
     * acl.grantPermission(GroupGrantee.ALL_USERS, Permission.PERMISSION_READ);
     * setFileAcl(acl);
     * 
     */
    private Object fileAcl;

    /**
     * 缩略图的访问控制列表,一般情况下只有对象存储支持该功能
     * 详情见{@link FileInfo#setFileAcl}
     */
    private Object thFileAcl;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;


    /**
     * 文件大小
     */
    public String getFileSize() {
        return FileUtil.readableFileSize(size);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy