簡體   English   中英

如何從文件系統發送包含包含json字符串和大文件的多部分數據的HTTP請求?

[英]How to send an HTTP request with multipart data containing a json string and a big file from the file system?


上下文

我想發送包含兩部分的多部分主體數據的HTTP請求:

  1. 包含一些元數據的JSON字符串
  2. 一些文件二進制數據

我已經知道的

如此答案中所述,可以輕松完成此操作。 但是,如果文件可能很大,會發生什么情況? 有了這個新的約束,我們自然不能將數據封裝在NSData對象中,因為它將占用大量內存資源。

任何熟悉NSURLRequest類的人都會想到的第一個想法是使用HTTPBodyStream屬性而不是HTTPBody 但是,如何獲得同時寫入JSON和文件數據段(以及邊界和其他必需的HTTP內容)的流呢?

解決方法是將NSInputStream子類化。 實際上,我已經注意到AFNetworking框架使用了這種方法。 但是,從我聽說,有很多的無證/怪異的方法從覆蓋NSStream類,如所描述這里 ,這在我的愚見,聽起來很多,實現的東西看似簡單的需要(潛在的危險)的工作。


有沒有辦法實現預期的行為? 請考慮以下約束:

  • 沒有第三方框架
  • 使用干凈的方法(不覆蓋未記錄的方法,因為它們會在將來的SDK中更改)

您可以使用我的開源POSInputStreamLibrary 它提供了流式傳輸所需數據的功能。 您唯一需要做的就是實現POSBlobInputStreamDataSource協議,並將實現用作POSBlobInputStream的參數。

如果嚴格限制使用第3方框架,則可以使用POSBlobInputStream作為示例,該示例實現私有API方法以使自定義NSInputStream可行。

隨時詢問有關實現細節和祝您好運的任何問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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