试用transloadit api,当我在transloadit网站上使用测试模式时,该模板可以工作,但当我尝试在Node JS中与SDK一起使用它时,我得到了一个错误:
INVALID_FORM_DATA - https://api2.transloadit.com/assemblies - INVALID_FORM_DATA: The form contained bad data, which cannot be parsed.相关代码:(_asset.content)是一个Buffer对象
async function getThumbnailUrl(_assetkey: string, _asset: I.FormFile): Promise<string> {
let tOptions = {
waitForCompletion: true,
params: {
template_id: process.env.THUMB_TRANSLOADIT_TEMPLATE,
},
};
const stream = new Readable({
read() {
this.push(_asset.content);
this.push(null);
},
});
console.log(_asset.content);
util.transloadit.addStream(_assetkey, stream);
return new Promise((resolve, reject) => {
util.transloadit.createAssembly(tOptions, (err, status) => {
if (err) {
reject(err);
}
console.log(status);
//return status;
resolve(status);
});
});
}发布于 2021-03-02 19:08:36
我注意到你也在Transloadit论坛上发布了这个问题-所以如果其他人遇到这个问题,你可以在这个主题here上找到更多信息。
以下是OP发现的一个可能有用的变通方法:
只是为了结束这个话题,我刚刚测试了我的变通方法(上传到s3,然后使用导入s3机器人来获取文件),并让它与nodejs sdk一起工作,所以我应该可以很好地使用它。
我怀疑我得到的错误不是与transloadit api有关,而是与节点js (https://github.com/form-data/form-data 1)的表单数据库有关,并且不知何故没有以transloadit api期望的方式输入表单数据。
但由于没有我能找到的那个库的替代品,我真的无法验证这个假设。
Transloadit核心团队也对此问题给出了以下回应:
它可能会尝试将他的流设置为Tus流,这意味着它们不会作为多部分/表单数据上传。
在任何一种情况下,他的回调的错误似乎都来自于_remoteJson之外的错误
这些可能是问题所在。
https://github.com/transloadit/node-sdk/blob/master/src/TransloaditClient.js#L146 https://github.com/transloadit/node-sdk/blob/master/src/TransloaditClient.js#L606 https://github.com/transloadit/node-sdk/blob/master/src/TransloaditClient.js#L642
表单数据库也可能是错误的来源
为了进一步测试这一点,我们需要尝试使用他正在使用的库,确保它的输出是正确的,然后调试node-sdk以查看逻辑故障在哪里,或者逻辑故障是否在API端。
https://stackoverflow.com/questions/62869578
复制相似问题