You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Deno中使用Dropbox v2上传文件API

Deno环境Dropbox API文件上传实现方案

常见400 Bad Request错误原因

  • 未按要求配置请求头,将Dropbox-API-Arg参数放在请求体而非请求头中
  • 错误使用FormData包装二进制文件,Dropbox单文件上传接口要求请求体直接传入文件二进制流
  • 请求头Content-Type未设置为application/octet-stream
  • 授权令牌格式错误,缺失Bearer前缀

可直接运行的实现代码(适用于150MB以下小文件)

// 替换为你自己的Dropbox访问令牌
const DROPBOX_TOKEN = "你的访问令牌";
// 替换为本地要上传的文件路径
const LOCAL_FILE_PATH = "./test.txt";
// 替换为上传到Dropbox的目标路径,必须以/开头
const DROPBOX_TARGET_PATH = "/test_upload.txt";

// 读取本地文件二进制内容
const fileContent = await Deno.readFile(LOCAL_FILE_PATH);

const resp = await fetch("https://content.dropboxapi.com/2/files/upload", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${DROPBOX_TOKEN}`,
    "Content-Type": "application/octet-stream",
    // 上传配置必须放在这个头里,不能放到请求体
    "Dropbox-API-Arg": JSON.stringify({
      path: DROPBOX_TARGET_PATH,
      // 可选配置:如果目标路径存在文件则直接覆盖,不加的话重名会报错
      mode: "overwrite"
    })
  },
  body: fileContent
});

if (resp.ok) {
  const result = await resp.json();
  console.log("上传成功", result);
} else {
  const errInfo = await resp.text();
  console.log("上传失败", resp.status, errInfo);
}

150MB以上大文件处理说明

超过150MB的文件需要使用分段上传接口,流程为:

  • 调用/2/files/upload_session/start初始化上传会话,获取会话ID
  • 多次调用/2/files/upload_session/append_v2分批上传文件分片
  • 所有分片上传完成后调用/2/files/upload_session/finish合并文件

内容的提问来源于stack exchange,提问作者Kin Kurnia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 11:18:05