【问题标题】:HTTP Post Request with Image Javascript带有图像 Javascript 的 HTTP 发布请求
【发布时间】:2016-01-12 12:36:28
【问题描述】:

我正在尝试使用 Javascript 向图像识别 API 提交发布请求,但我不知道如何发送实际图像。我知道我不能仅使用本地文件发送它(当我尝试运行它时,我得到“跨源请求仅支持协议方案”错误)。如何使用 Post 请求发送图像?

到目前为止,我的代码是:

var xhr = new XMLHttpRequest();

xhr.open("POST", "cigarette.jpg", false);
xhr.setRequestHeader("Authorization", "CloudSight [key]");

xhr.send("http://api.cloudsightapi.com/image_requests");

console.log(xhr.status);
console.log(xhr.statusText);

我对 Javascript 和 API 还很陌生,以前从未真正做过这样的事情;如何在不涉及极其复杂的内容的情况下发送图像?

【问题讨论】:

  • 这取决于服务期望数据采用什么格式(我不知道这是什么格式,因为它们似乎没有链接到来自their API homepage 的任何面向公众的文档) .哦,不,找到了文档,它们被页面中间的链接(看起来不像链接)很好地隐藏了。
  • open 的第二个参数应该是 web 服务端点的 URL)。
  • 所以it says "Image attach as a multipart-form-request part.",这意味着您只需以常规方式发布表单数据。
  • @Quentin 那么如果 open 的第二个参数是 URL,那么图像会去哪里,我将如何附加表单数据?对不起,如果这真的是基本的东西……有没有我可以看看的链接告诉我呢?编辑:对不起,在我看到链接之前发布:非常感谢! :)

标签: javascript api http post cloudsight


【解决方案1】:

您的代码几乎没有问题。

  1. 您需要正确的 HTTP 标头来移植图像。
  2. 您不能发布这样的 JPG 图片。

如果您没有正确使用 API,请查看此处了解如何操作。

https://cloudsight.readme.io/docs/testinput

在 curl 中也可以找到示例

curl -i -X POST \
-H "Authorization: CloudSight [key]" \
-F "image_request[image]=@Image.jpg" \
-F "image_request[locale]=en-US" \
https://api.cloudsightapi.com/image_requests

【讨论】:

  • 谢谢,我会的:当您说正确的 HTTP 标头来移植图像时,您是什么意思?
  • 您需要设置一个 HTTP Header Authorization: CloudSight [key] 并且还需要 multipart/form-data ,这无法通过常规 xhr 完成。您可能想切换到 jQuery 以更好地做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 2020-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多