如何在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
相关产品推荐
相关产品推荐

