2016-09-22 43 views
3

我正在開發一個SDK,用於驗證傳入的多部分/表單數據文件並將其保存到服務器端的磁盤上。類似於:所有python框架的通用傳入文件上傳http請求對象

sdk.upload(httpRequest, destinationPath, validationOptions) 

我需要傳入http請求:字段名稱,文件名,文件和MIME類型。

的問題是,Python框架有不同的HTTP請求對象:

  • Django的:HttpRequestrequest.FILES包含的文件
  • 瓶:requestrequest.files包含的文件。
  • 金字塔:request.POST包含文件。

files字典中的文件值對象相同,它具有不同的結構。

我需要的是一個統一的/通用的http請求對象或另一種解決方案來處理一種方式。

可能不方便的解決方案:

  • 對每個框架不同的實現:我想處理它在一個通用的方法。
  • 用lib解析multipart/form-data:它實際上是一個重新解析,因爲框架已經解析過一次。其他語言

例子:

  • PHP:$ _FILES對象
  • 的NodeJS:讀流請求
  • ASP.NET:靜態HttpContext.Current.Request
+0

@ martijn-pieters您能否給我提供一些問題以幫助我解決這個「太寬泛」的問題?您的問題的答案將作爲我主要問題的細節添加,以使其不太寬泛。這將幫助我理解爲什麼這個問題太廣泛。 謝謝。 –

+0

嗨弗洛林!歡迎來到StackOverflow政治。 Martjin傾向於將問題定義得非常清楚。就像你能給出一個示例代碼,並將評論放在那裏「這就是我想在這一點上發生的事情。」 '就像Flash和金字塔的例子。編輯你的問題,它會重新打開。 –

回答

1

所有框架實現WSGI協議https://www.python.org/dev/peps/pep-0333/。這是共同的基本機制,他們已經建立了自己的便利功能。你總是可以回到原始的WSGI。

上傳後一直流程存在存儲和處理文件的共同框架:車廠http://depot.readthedocs.io/en/latest/

例如,你可以抓住原始WSGI數據和生成的WebOb Request對象了它在每一個框架http://webob.org/

另請參閱Authomatic的靈感http://peterhudec.github.io/authomatic/

+0

無法弄清楚如何在Django中生成WebOb請求。你有一個例子嗎? –