@enableai/s3
v1.0.3
Published
引入:package.json 中添加,需要确认版本号
Downloads
94
Readme
引入 & 安装
引入:package.json 中添加,需要确认版本号
"@enableai/s3": "0.0.5",安装:yarn | npm i | ni
使用:直接引入对应的方法,调用即可
import { uploadFileS3 } from '@enableai/s3'注意:内部会调用一个接口请求s3连接token,地址是 /core/obs/token,依赖于当前环境自动补齐前面的baseUrl,需要检查当前环境的对应接口是否正常
文件上传 + 进度
const uploadFileS3: (
file: {file: File, type: string},
path: string,
onProgress: ({
percent: number;
loaded: number;
total: number;
}) => void
) => Promise<CompleteMultipartUploadCommandOutput>
uploadFileS3({ file: file.file, type: file.type! }, url, ({ percent }) => {
if (percent === 100) percent = 0
setPercent(percent)
})注意:文件上传与下载的path需要一致,path的组装方式可以与后端协商
例:
const uploadFileS3: (file: {file: File, type: string}, path: string) => Promise<void>
const Key = `${batchId}/${file.dirname}${file.name}`
const datasetPart = `dataset/${datasetId}/`
const path = datasetPart + Key文件下载:
getS3FileResponse 参数是一个path,用于获取目标文件的二进制流 Response
const getS3FileResponse: (path: string) => Promise<Response>将Blob转成url
export const blobToUrl = (blob: Blob) => {
return URL.createObjectURL(blob)
}
getS3FileResponse(path).then(res => res.blob()).then(blobToUrl)
问题排查:
- 从后端获取的S3连接信息会存储在localStorage中,每次访问会计算过期时间
- 其中有一个 region 字段,如果为空,会报错。
- 需要请运维同学添加region配置
