2017-08-24 66 views
1

我正在開發一個帶有角度的Web應用程序,並且我在使用Imgur API時遇到了麻煩。我的目標是製作一張表格,讓用戶選擇其照片,然後將其上傳到imgur,並存儲圖像存儲的鏈接。使用Imgur API與Angular4

但是,我有兩個問題: 什麼是「存儲」圖像的最佳方式? 目前我使用的「變」財產,我這個存放:

this.file = event.srcElement.files 

這是正確的方式?

然後,我無法將圖像發送到API。

var headers = {'Authorization': 'Client-ID {{id-here}}'}; 
this.http.post(url, payload, headers) 
        .toPromise() 
        .then(response => { 
         console.log(response); 
         response.json() as string; 
        }) 
        .catch(this.handleError); 

服務器響應401 - 未經授權。 我可能以錯誤的方式加載客戶端ID,只是不知道我應該怎麼做。

與有效載荷相同,我應該如何聲明它?

謝謝你的幫助!

+0

您是否驗證授權標頭是否真的被髮送?如果沒有,轉到開發人員面板(ctrl + shift + i),切換到「網絡」選項卡並進行呼叫。查看'Headers'選項卡,找到您的請求並檢查api調用的'Request Header',它應該包含'Authorization'標頭。如果不存在,則需要進一步的代碼分析。 – pcarrara

+0

如果你還沒有達到API文件是這樣的。 https://apidocs.imgur.com/正如我所看到的,如果您有客戶端ID,則可以對公共只讀資源執行api調用。 – pcarrara

+0

是的,授權沒有被髮送。已經修復它,非常感謝! – Caramelo

回答

1

感謝pcarrara我能夠排除什麼是錯的。

需要聲明的標題是這樣的:

var headers = new Headers({'authorization': 'Client-ID clientid'});

然後把它像這樣:

this.http.post(imgurl, photo, {headers: headers}) 

我閱讀使用

<input type="file" name="image" id="image" #fileInput> 

    @ViewChild('fileInput') inputEl: ElementRef; 
    let inputEl: HTMLInputElement = this.inputEl.nativeElement; 
    this.file = inputEl.files.item(0); 

照片只是發表的解決方案這裏萬一有人遇到同樣的問題。 :)