簡體   English   中英

錯誤:錯誤的內容類型。 請使用多部分

[英]error: Bad content type. Please use multipart

我對文件上傳完全陌生......我正在使用angular-file-uploadangularjs之外創建一個 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM