and*_*dko 7 javascript node.js dropbox-api
我有一个通过 Dropbox Javascript SDK 尝试下载文件的应用程序。我不知道出了什么问题。通过 fetch 调用访问 Dropbox API 会直接带来相同的错误。Dropbox API 文档说错误 400 是错误的输入参数,而看起来我发送的内容没有问题 - "Dropbox-API-Arg":"{\"path\":\"/1/price.xlsx\" }"
const Dropbox = require("dropbox").Dropbox;
import axios from "axios";
import fs = require("fs");
import { logger } from "./logger";
export class FileHandler {
public async handle(path: string, token: string): Promise<void> {
try {
const dbx = new Dropbox({ fetch: axios, accessToken: token });
dbx.filesDownload({ path })
.then((data) => {
fs.writeFile(data.name, data.fileBinary, "binary", (err) => {
if (err) { throw err; }
});
})
.catch((error: any) => {
logger.error(error);
throw new Error(error);
});
} catch (err) {
logger.error(err);
}
}
}
Run Code Online (Sandbox Code Playgroud)
看起来只是一些请求参数错误,现在它可以工作了:
public static async handle(path: string, token: string, userId: number, fileId: string): Promise<void> {
try {
axios.post("https://api.dropboxapi.com/2/files/get_temporary_link", { path }, {
data: {
path,
},
headers: {
"Authorization": `Bearer ${token}`,
"Content-Type": "application/json",
},
}).then((data) => FileHandler.readFile(data.data.link, data.data.metadata.name)
.then(() => FileUtilities.parseFile(data.data.metadata.name, fileId)))
.catch((err) => logger.error(err));
} catch (err) {
logger.error(err);
UtilsRepository.findSupplierEmail(userId).then(data => {
throw new MailingError(new MailObjectCannotReadFile(data[0].Email));
});
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
421 次 |
| 最近记录: |