![JAR search and dependency download from the Maven repository](/logo.png)
cn.bootx.platform.starter.file.entity.UploadFileInfo Maven / Gradle / Ivy
The newest version!
package cn.bootx.platform.starter.file.entity;
import cn.bootx.platform.common.core.function.EntityBaseFunction;
import cn.bootx.platform.common.mybatisplus.base.MpIdEntity;
import cn.bootx.platform.common.mybatisplus.handler.JacksonRawTypeHandler;
import cn.bootx.platform.starter.file.convert.FileConvert;
import cn.bootx.platform.starter.file.dto.UploadFileDto;
import cn.hutool.core.lang.Dict;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
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
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
@TableName(value = "starter_file_upload_info", autoResultMap = true)
public class UploadFileInfo extends MpIdEntity implements EntityBaseFunction {
/**
* 文件访问地址
*/
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;
/**
* 文件元数据
*/
@TableField(typeHandler = JacksonRawTypeHandler.class)
private Map metadata;
/**
* 文件用户元数据
*/
@TableField(typeHandler = JacksonRawTypeHandler.class)
private Map userMetadata;
/**
* 缩略图元数据
*/
@TableField(typeHandler = JacksonRawTypeHandler.class)
private Map thMetadata;
/**
* 缩略图用户元数据
*/
@TableField(typeHandler = JacksonRawTypeHandler.class)
private Map thUserMetadata;
/**
* 附加属性字典
*/
@TableField(typeHandler = JacksonRawTypeHandler.class)
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);
*
*/
@TableField(typeHandler = JacksonRawTypeHandler.class)
private Object fileAcl;
/**
* 缩略图的访问控制列表,一般情况下只有对象存储支持该功能
* 详情见{@link FileInfo#setFileAcl}
*/
@TableField(typeHandler = JacksonRawTypeHandler.class)
private Object thFileAcl;
/** 创建时间 */
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@Override
public UploadFileDto toDto() {
return FileConvert.CONVERT.convert(this);
}
/**
* 初始化创建
*/
public static UploadFileInfo init(FileInfo fileInfo){
return FileConvert.CONVERT.convert(fileInfo);
}
/**
* 转换为 x.file.storage 的文件信息对象
*/
public FileInfo toFileInfo(){
return FileConvert.CONVERT.toFileInfo(this);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy