【问题标题】:Generic incoming file upload http request object for all python frameworks [closed]所有python框架的通用传入文件上传http请求对象[关闭]
【发布时间】:2017-01-31 13:02:55
【问题描述】:

我正在开发一个 SDK,用于验证传入的 multipart/form-data 文件并将其保存到服务器端的磁盘。比如:

sdk.upload(httpRequest, destinationPath, validationOptions)

我需要传入的 http 请求:字段名、文件名、文件和 mime 类型。

问题是python框架有不同的http请求对象:

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

files 字典中的文件值对象也是如此,它具有不同的结构。

我需要的是一个统一/通用的 http 请求对象或另一种以一种方式处理它的解决方案。

可能不方便的解决方案:

  • 每个框架都有不同的实现:我想以通用方式处理它。
  • 使用 lib 解析 multipart/form-data:实际上是重新解析,因为框架已经解析过一次。

其他语言的示例:

  • PHP:$_FILES 对象
  • NodeJS:可读流请求
  • ASP.NET:静态 HttpContext.Current.Request

【问题讨论】:

  • @martijn-pieters 您能否提供一些问题来帮助我解决这个“过于广泛”的问题?您的问题的答案将作为详细信息添加到我的主要问题中,以使其不会太宽泛。这将帮助我理解为什么这个问题过于宽泛。谢谢。

标签: python django file-upload flask pyramid


【解决方案1】:

所有框架都实现了 WSGI 协议 https://www.python.org/dev/peps/pep-0333/ 。这是通用的底层机制,他们在此基础上构建了自己的便利功能。您可以随时返回原始 WSGI。

上传完成后,有一个通用的框架来存储和处理文件:Depot http://depot.readthedocs.io/en/latest/

例如,您可以在每个框架中获取原始 WSGI 数据并从中生成 WebOb 请求对象http://webob.org/

另请参阅 Authomatic 以获取灵感http://peterhudec.github.io/authomatic/

【讨论】:

  • 无法弄清楚如何在 Django 中生成 WebOb 请求。你有例子吗?
猜你喜欢
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
  • 2017-10-11
  • 2019-05-20
  • 2021-06-06
  • 2020-05-05
  • 1970-01-01
  • 2013-05-08
相关资源
最近更新 更多