# 文件存储

# uploadFile

# 1. 接口描述

接口功能:上传文件到文件管理服务

接口声明:uploadFile(object: Object): Promise<Object>

备注:1.0.1 版本后,为了提高文件上传性能,文件上传方式修改为直接上传到对象存储,为了防止在使用过程中出现 CORS 报错,需要到 云开发控制台 用户管理>登录设置>安全域名 版块添加域名。如果已有域名出现 CORS 报错,请删除安全域名,重新添加。

# 2. 输入参数

字段 类型 必填 说明
cloudPath string 文件的绝对路径,包含文件名
filePath HTML upload file 要上传的文件对象
onUploadProgress function 上传进度回调

注:cloudPath 为文件的绝对路径,包含文件名 foo/bar.jpg、foo/bar/baz.jpg 等,不能包含除[0-9 , a-z , A-Z]、/、!、-、_、.、、*和中文以外的字符,使用 / 字符来实现类似传统文件系统的层级结构。查看详情

# 3. 输出参数

字段 类型 必填 说明
code string 状态码,操作成功则不返回
message string 错误描述
fileID fileID 文件唯一 ID,用来访问文件,建议存储起来
requestId string 请求序列号,用于错误排查

# 4. 示例代码

promise风格

const tcb = require('tcb-js-sdk');

const app = tcb.init({
  env: 'xxxx-yyy'
});

const result = await app.uploadFile({
  cloudPath: 'test-admin.jpeg',
  filePath: document.getElementById('file').files[0],
  onUploadProgress: function(progressEvent) {
    console.log(progressEvent);
    var percentCompleted = Math.round(
      (progressEvent.loaded * 100) / progressEvent.total
    );
  }
});

callback风格

//初始化SDK实例部分代码如上
await app.uploadFile(
  {
    cloudPath: 'test-admin.jpeg',
    filePath: document.getElementById('file').files[0],
    onUploadProgress: function(progressEvent) {
      console.log(progressEvent);
      var percentCompleted = Math.round(
        (progressEvent.loaded * 100) / progressEvent.total
      );
    }
  },
  function(err, res) {}
);

# getTempFileURL

# 1. 接口描述

接口功能:获取文件CDN下载链接

接口声明:getTempFileURL(object: Object): Promise<Object>

# 2. 输入参数

字段 类型 必填 说明
fileList <Array>.string 要下载的文件 ID 组成的数组
# fileList
字段 类型 必填 说明
fileID string 文件 ID
maxAge Integer 文件链接有效期

# 3. 输出参数

字段 类型 必填 说明
code string 状态码,操作成功则为 SUCCESS
message string 错误描述
fileList <Array>.object 存储下载链接的数组
requestId string 请求序列号,用于错误排查
# fileList
字段 类型 必填 说明
code string 删除结果,成功为 SUCCESS
message string 错误描述
fileID string 文件 ID
tempFileURL string 文件访问链接

# 4. 示例代码

promise风格

//初始化SDK实例部分代码如上
app
  .getTempFileURL({
    fileList: ['cloud://jimmytest-088bef.jimmytest-088bef-1251059088/a|b测试.jpeg']
  })
  .then(res => {
    res.fileList.forEach((el) => {
      if(el.code === 'SUCCESS') {
        console.log(el.tempFileURL)
      } else {
        //获取下载链接失败
      }
    })
  });

callback风格

app.getTempFileURL(
  {
    fileList: ['cloud://jimmytest-088bef.jimmytest-088bef-1251059088/a|b测试.jpeg']
  },
  function(err, res) {}
);

# deleteFile

# 1. 接口描述

接口功能:删除文件

接口声明:deleteFile(object: Object): Promise<Object>

# 2. 输入参数

字段 类型 必填 说明
fileList <Array>.string 要删除的文件 ID 组成的数组

# 3. 输出参数

字段 类型 必填 说明
code string 状态码,操作成功则不返回
message string 错误描述
fileList <Array>.object 删除结果组成的数组
requestId string 请求序列号,用于错误排查

# fileList

字段 类型 必填 说明
code string 删除结果,成功为 SUCCESS
fileID string 文件 ID

# 4. 示例代码

promise风格

app
  .deleteFile({
    fileList: ['cloud://jimmytest-088bef/1534576354877.jpg']
  })
  .then(res => {
    res.fileList.forEach((el) => {
      if(el.code === 'SUCCESS') { //删除成功

      } else {

      }
    })
  });

callback风格

app.deleteFile(
  {
    fileList: ['cloud://jimmytest-088bef/1534576354877.jpg']
  },
  function(res) {}
);

# downloadFile

# 1. 接口描述

接口功能:下载文件到本地

接口声明:downloadFile(object: Object): Promise<Object>

# 2. 输入参数

字段 类型 必填 说明
fileID string 要下载的文件的id
tempFilePath string 下载的文件要存储的位置

# 3. 输出参数

字段 类型 必填 说明
code string 状态码,操作成功则不返回
message string 错误描述
fileContent Buffer 下载的文件的内容。如果传入tempFilePath则不返回该字段
requestId string 请求序列号,用于错误排查

# 4. 示例代码

promise风格

tcb.downloadFile({
    fileID: "cloud://aa-99j9f/my-photo.png",
    // tempFilePath: '/tmp/test/storage/my-photo.png'
}).then((res) => {

});

callback风格

tcb.downloadFile({
    fileID: "cloud://aa-99j9f/my-photo.png",
    // tempFilePath: '/tmp/test/storage/my-photo.png'
}, function(res) {

});