[英]error: Bad content type. Please use multipart
我對文件上傳完全陌生......我正在使用angular-file-upload它在angularjs之外創建一個 XHR 來將文件上傳到谷歌雲存儲。 當我嘗試上傳時,我不斷收到以下錯誤。 我該如何解決這個問題?
400 Bad content type. Please use multipart.
這是我的控制器設置:
var uploader = $scope.uploader = new FileUploader({
url: 'https://www.googleapis.com/upload/storage/v1/b/bucketsbuckets/o?uploadType=multipart',
headers : {
'Authorization': 'Bearer ya29.lgHmbYk-5FgxRElKafV4qdyWsdMjBFoO97S75p4vB0G0d6fryD5LASpf3JUY8Av9Yzhp9cQP8IQqhA',
'Content-Type': 'multipart/form-data'
},
autoUpload:true
});
問題是您使用的端點用於分段上傳,而不是基於 FORM 的分段上傳。 如果您將 Content-Type 設置為“multipart/related”而不是“multipart/form-data”,您應該能夠繼續。
多部分上傳到該端點,“www.googleapis.com/upload/storage/etc?uploadType=multipart”,需要一個多部分消息,正好有兩部分,第一部分是對象的元數據,在 JSON 中,第二部分是對象的元數據部分是數據。
有關這些要求的更多信息,請訪問: https : //cloud.google.com/storage/docs/json_api/v1/how-tos/upload
但是,如果您想以表單提交的樣式進行上傳,那也是可能的,但規則不同。 在這種情況下,您將使用各種適當的表單參數向“storage.googleapis.com/BUCKET/OBJECT”提交 POST: https : //cloud.google.com/storage/docs/reference-methods#postobject
現在,這一切都假設您出於某種原因嘗試將上傳作為分段請求。 如果您需要在對象上設置一些特定的元數據屬性,這可能是必要的,但如果不是,您可能會為自己增加難度。 一個簡單的 PUT 到“storage.googleapis.com/BUCKET/OBJECT”就可以了(雖然我不熟悉 angular-file-upload 並且不知道它是否支持非表單樣式的上傳)。
對於那些使用fetch
只需刪除標題上的content-type
。
我在github上發現了這個問題,我引用了:
手動設置 Content-Type 標頭意味着它缺少邊界參數。 刪除該標題並允許 fetch 生成完整的內容類型。 它看起來像這樣:
內容類型:multipart/form-data;boundary=----WebKitFormBoundaryyrV7KO0BoCBuDbTL
Fetch 根據作為 > 請求正文內容傳入的 FormData 對象知道要創建哪種內容類型標頭。
^^ 這個對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.