上传文件

最近更新时间:2020-10-19 17:12:02

您可以上传任意数量、格式的文件至 CloudBase 云存储,也可以自定义文件、目录的路径和名字。

默认情况下,只有通过了 CloudBase 身份验证 的用户才可以向云存储空间上传文件,因此在用户端(如 Web、Flutter 等)上传文件时需先进行登录认证。

说明:

您也可以使用 自定义安全规则,为云存储设置更宽松或更严格的读写权限。

使用 SDK 可以向云存储空间上传文件,并返回该文件全局唯一标识 fileID

Web

//第一步,引入 Web SDK,
import tcb from "@cloudbase/js-sdk";

//第二步,初始化
const app = tcb.init({
  env: "your-env-id"
});

/**
  第三步,登录鉴权流程,此处代码略,请参考:
  https://cloud.tencent.com/document/product/876/41728
*/

app
  .uploadFile({
    // 云存储的路径
    cloudPath: "dirname/filename",
    // 需要上传的文件,File 类型
    filePath: document.getElementById("file").files[0]
  })
  .then((res) => {
    // 返回文件 ID
    console.log(res.fileID);
  });

微信小程序

//需先使用 wx.cloud.init 初始化,小程序端无需再引入 SDK ,且免鉴权
wx.cloud
  .uploadFile({
    cloudPath: "example.png", // 上传至云端的路径
    filePath: "" // 小程序临时文件路径,需结合小程序相关 API 获取
  })
  .then((res) => {
    // 返回文件 ID
    console.log(res.fileID);
  });

Node.js

const tcb = require("@cloudbase/node-sdk");
const fs = require("fs");

const app = tcb.init();
app
  .uploadFile({
    cloudPath: "path/test.jpg",
    fileContent: fs.createReadStream("test.jpg")
  })
  .then((res) => {
    // 返回文件 ID
    console.log(res.fileID);
  });
说明:

  • 上传时文件名需要符合 文件名规范
  • cloudPath 为云存储文件或文件夹的相对根目录的路径,为 目录/文件名 的形式,cloudPath 不需要以 / 开头;
  • 如果将文件上传至同一路径则是覆盖写,默认情况下,不允许 A 用户覆盖写 B 用户的文件。