2015-10-14 79 views
1

我想提交一個發佈請求到圖像識別API使用Javascript,但我不能解決如何發送實際圖像。我知道我不能僅僅使用本地文件發送它(當我嘗試運行它時,我得到了「跨源請求僅支持協議方案」錯誤)。我如何使用Post請求發送圖像?HTTP Post請求與圖像Javascript

到目前爲止我的代碼是:

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和以前真的沒有做過這樣的事;我怎麼會發送圖像,而不會進入令人難以置信的複雜的東西?

+0

這取決於什麼格式的服務期望的數據是(我不知道那個,似乎是因爲他們不」 t似乎與[他們的API主頁](http://cloudsightapi.com/api)中的任何面向公衆的文檔鏈接)。哦,不,找到了文檔,他們只是隱藏在頁面中間的鏈接(看起來不像鏈接)。 – Quentin

+1

(open的第二個參數應該是web服務端點的URL)。 – Quentin

+0

因此[它說](https://cloudsight.readme.io/)「圖像作爲多部分形式請求部分附加。」,這意味着您只需以常規方式發佈表單數據。 – Quentin

回答

0

您的代碼很少出現問題。

  1. 您需要正確的HTTP頭來移植圖像。
  2. 你不能發佈這樣的JPG圖像。

此外,您沒有正確使用API​​,請看看這裏看看如何去做。

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

此外,在這裏找到一個樣本捲曲

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

謝謝,我將:當你說正確的HTTP頭來移植圖像,你是什麼意思? – teamshortcut

+0

你需要設置一個HTTP Header'Authorization:CloudSight [key]'和'multipart/form-data',這是常規'xhr'無法做到的。你可能想切換到jQuery以更好的方式來做到這一點。 – anand