使用Imgur API上传图片时, 有些图片没有上传 返回状态 400 或 417 错误。
{
status: 400,
success: false,
data: {
error: "We don't support that file type!",
request: '/3/upload'
}
{
status: 417,
success: false,
data: {
error: 'Internal expectation failed',
request: '/3/upload',
method: 'POST'
}
}
此错误在启动控制台时已修复。 但每次我上传图片时,我都必须重新启动控制台。我该如何防止这种情况发生?
注意:您的“帐户”和您的“应用程序”是不同的实体。 如果您尝试上传到您帐户上的相册,并认为您的应用程序具有访问该相册的权限,因为它们绑定到同一电子邮件,您可能会收到 417 错误。
此外,imgur 似乎会在验证访问权限之前验证 .PNG 文件。
我得出的结论是,当您正在解决问题时,这是您“离成功有多近”的粗略衡量标准:
1:非常接近: “内部预期落空” 您的表单数据中的 .PNG 有效负载可能是正确的。
2:更冷: “我们不支持该文件类型” 当您尝试将 .PNG 二进制文件连接到“表单数据”有效负载时,您可能损坏了它。
3:最冷: “错误的请求” 你真是搞砸了。
如果您像我一样滚动自己的“多部分表单数据”,这里的一张海报有一个很好的低级示例,该示例不使用第3方库: NodeJS Request如何发送multipart/form-data POST请求
您的有效负载的构造如下:
payload=Buffer.concat([
Buffer.from( formdata_string_top , "utf8" )
, Buffer.from( png_binary_file , "binary" )
, Buffer.from( final_formdata_boundary, "utf8" )
]);;
您可能会想要这样做,因为它在您的计算机中是可读的 日志,但它WILL_CORRUPT_YOUR_BINARY_FILE
payload=Buffer.concat([
Buffer.from( formdata_string_top , "utf8" )
, Buffer.from( png_binary_file , "binary" )
, Buffer.from( final_formdata_boundary, "utf8" )
]).toString( "utf8" );
我尝试从 Strapi 将图像上传到 imgur,但失败并显示 400“我们不支持该文件类型!”。看来锐利处理对图像缓冲区做了一些 imgur 不喜欢的事情......