如何修复 imgur api 错误状态 400、417 错误

问题描述 投票:0回答:3

使用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'
  }
}

此错误在启动控制台时已修复。 但每次我上传图片时,我都必须重新启动控制台。我该如何防止这种情况发生?

javascript imgur
3个回答
4
投票

417错误表明 Imgur CDN 需要 .png、.mp4、.gif 等文件类型。您可以在此处查看支持的文件类型。

400表示不正确/错误的请求,在请求

POST
类型请求的API时您必须知道如何正确请求它,您可以参考正确的方法这里


1
投票

注意:您的“帐户”和您的“应用程序”是不同的实体。 如果您尝试上传到您帐户上的相册,并认为您的应用程序具有访问该相册的权限,因为它们绑定到同一电子邮件,您可能会收到 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" );

0
投票

我尝试从 Strapi 将图像上传到 imgur,但失败并显示 400“我们不支持该文件类型!”。看来锐利处理对图像缓冲区做了一些 imgur 不喜欢的事情......

© www.soinside.com 2019 - 2024. All rights reserved.