以JSON格式發布文件和相關資料到RESTful WebService
P粉056618053
P粉056618053 2023-08-20 13:47:10
0
2
505
<p>在我正在開發的應用程式中,我們希望客戶端以JSON格式發送數據,因此我正在開發RESTful API。該應用程式的一部分要求客戶上傳一個檔案(通常是圖像),以及有關圖像的資訊。 </p> <p>我很難追蹤到如何在單一請求中完成這個操作。是否可以將檔案資料Base64編碼為JSON字串?我需要向伺服器執行兩個POST請求嗎?我是否不應該使用JSON來處理這個問題? </p> <p>另外,我們在後端使用Grails,並且這些服務可由原生行動用戶端(iPhone、Android等)訪問,如果這些資訊有所不同的話。 </p>
P粉056618053
P粉056618053

全部回覆(2)
P粉994092873

您可以使用 multipart/form-data 內容類型在一個請求中傳送文件和資料:

來自 http://www.faqs.org/rfcs/rfc2388.html

您可以在每個邊界之間的每個部分中包含文件資訊或欄位資訊。我已經成功地實現了一個需要使用者提交資料和表單的RESTful服務,multipart/form-data完美地工作。該服務使用Java/Spring構建,客戶端使用C#,所以很遺憾我沒有Grails的範例可以提供給您關於如何設定服務。在這種情況下,您不需要使用JSON,因為每個「form-data」部分都為您提供了指定參數名稱及其值的位置。

使用multipart/form-data的好處是您正在使用HTTP定義的頭部,因此您遵循了使用現有HTTP工具建立服務的REST理念。

P粉145543872

我在這裡問了一個類似的問題:

如何使用REST Web服務上傳帶有元資料的檔案?

你基本上有三種選擇:

  1. 對檔案進行Base64編碼,但會增加資料大小約33%,並在伺服器和用戶端中增加編碼/解碼的處理開銷。
  2. 首先以multipart/form-data的形式傳送文件,並將ID傳回給客戶端。然後客戶端使用該ID發送元數據,伺服器重新關聯文件和元數據。
  3. 首先發送元數據,並將ID傳回給客戶端。然後客戶端使用該ID發送文件,伺服器重新關聯文件和元資料。
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!