在我的iOS應用程序中,我構建了一個NSData
作爲NSMutableURLRequest
的正文,以便我可以在一個HTTP POST中上傳多個文件。HTTP上傳多個文件從iOS到PHP
我的帖子正文的內容是這樣的(刪除文件數據,只是用字節數代替):
multipart/form-data; charset=utf-8; boundary=0xKhTmLbOuNdArY
--0xKhTmLbOuNdArY
Content-Disposition: form-data; name="email"
[email protected]
--0xKhTmLbOuNdArY
Content-Disposition: form-data; name="sqlite"; filename="backup.MyApp.v1.1.3-to-v1.1.3.1443578420.sqlite"
Content-Type: application/octet-stream
// ... data length: 880640
--0xKhTmLbOuNdArY--
Content-Disposition: form-data; name="sqliteshm"; filename="backup.MyApp.v1.1.3-to-v1.1.3.1443578420.sqlite-shm"
Content-Type: application/octet-stream
// ... data length: 32768
--0xKhTmLbOuNdArY--
Content-Disposition: form-data; name="sqlitewal"; filename="backup.MyApp.v1.1.3-to-v1.1.3.1443578420.sqlite-wal"
Content-Type: application/octet-stream
// ... data length: 3901672
--0xKhTmLbOuNdArY--
然而,在PHP端時,我收到這個帖子,我只看到三個文件中的第一個。如果我先把名爲「sqlite」的那個名字放在PHP端,那麼我只能看到「sqlite」文件。如果我先把名爲「sqliteshm」的那個放到第一個,那麼我只能看到$ _FILES數組中的「sqliteshm」文件。
array (
'sqliteshm' =>
array (
'name' => 'backup.MyApp.v1.1.3-to-v1.1.3.1443578420.sqlite-shm',
'type' => 'application/octet-stream',
'tmp_name' => '/private/var/tmp/phpk1wyWb',
'error' => 0,
'size' => 32768,
),
)
無論我首先放哪一個,但只有第一個文件出現在PHP端,文件大小相匹配。
我是否需要做一些特別的事情才能在PHP端接收多個文件?
還是我從iOS發送多個文件不正確?
我過去曾經遇到過很多ASI問題,當我嘗試轉換爲AFNetworking時,我認爲它適合於ARC轉換,而且事情很奇怪,所以我沒有最終使用它。從那以後,我一直在使用RequestQueue,但RQ沒有文件上傳選項。我使用AFNetworking的podfile安裝,並順利進行,並且他們的代碼也成功上傳了這些文件。謝謝。 –