2010-12-23 42 views
0

我需要通過HTTP POST請求,MIME編碼將某些數據發送到.zip存檔中的服務器。我認爲這意味着我只需要在請求頭中指定MIME類型。但我很困惑,我應該把什麼放在請求的身上。到目前爲止,我可以看到兩種方法可以做到這一點:如何通過HTTP發送MIME?

  1. 通常情況下,我把它(對不起,我不是一個網絡編碼器,所以還挺HTTP跛腳),POST請求主體由對PARAMETER_NAME =一些+數據除以'&'。我是否應該以同樣的方式執行此操作,並在一個參數中將我的文件的內容寫入base64中?這也可以讓我提供補充參數。

  2. 或者我應該只填寫POST body與我的文件的內容(在base64中,對吧?)?如果是這樣,有什麼辦法提供有關該文件的其他信息?

只有其中一種方法可以接受,或者都是?如果是這樣,那麼最佳做法是什麼?

此外,在C++ Qt的將是非常,非常大加讚賞,但完全沒有必要:)代碼示例

+0

請檢查,如果這個職位http://stackoverflow.com/問題/ 2627949/upload-file-with-post-method-on-qt4/2634842#2634842會爲你提供任何幫助 – 2010-12-24 17:23:24

回答

2

整個鍵=在POST請求值的身體只是當你發送表單數據爲你的服務器。如果您只想發佈.zip文件的內容,您可以將其作爲POST的主體發送,不需要像描述的那樣將其設置爲表單發佈。您可以在請求中設置以下標題:

Content-Type: application/zip 
Content-Disposition: attachment; filename=myzip.zip 

你甚至都不一定要Base64編碼,身體,雖然你應該如果這就是你的服務器要求。

Content-Disposition是您需要描述更多關於文件上傳的內容。你可以在這裏找到一些細節吧:

http://en.wikipedia.org/wiki/MIME#Content-Disposition

這裏

http://www.ietf.org/rfc/rfc2183.txt

在服務器端,您只需要編寫一些代碼,將獲得響應主體在其條款內容(這很簡單,儘管YMMV取決於語言和框架),並且根據需要處理它。

對於現實世界的例子,你可能會發現它很有用來看的,比如說,爲的AtomPub如何做到這一點:

http://bitworking.org/projects/atom/rfc5023.html