【问题标题】:Opening POSTed file with PIL Image使用 PIL Image 打开 POSTed 文件
【发布时间】:2010-02-01 06:01:12
【问题描述】:

使用 WSGI、webob 和 PIL,我尝试直接从请求中对文件使用 Image.open()。但是,Image.open() 总是抛出异常“无法识别图像文件”。图像是唯一的字段,不使用其他 POST 或 GET 变量。该文件来自带有 enctype="multipart/form-data" 的标准 HTML 上传表单。

import Image, ImageFile
from webob import Request

def application(environ, start_response):
    req = Request(environ)
    req.make_body_seekable() 
    im = Image.open(req.body_file) # "Cannot identify image file"
    im.save('testfileio.png','PNG')

我的猜测是我没有正确加载上传的图像数据,但不确定正确的做法是什么。

【问题讨论】:

  • 当你说它是“POSTed”时,你的意思是你正在使用一个特殊的工具来POST一个body为Content-Type: image/png的请求吗?或者你只是说你有一个浏览器和一个只有一个字段的multipart/form-data 表单,一个<input type="file">?如果是后者,那么您仍然需要以通常的方式解析表单以从中获取文件上传字段。
  • 是后者,这是标准的HTML文件上传表单。

标签: python mod-wsgi webob


【解决方案1】:

我不熟悉 webob,但我猜 body_file 包含整个帖子的内容,而不仅仅是您的图像。 docs 似乎证实了这一点。

req.POST['nameOfFileControl'] 中有什么?那有文件句柄吗?这将是 Image.open 需要的文件句柄。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 2020-06-04
    • 2023-03-10
    • 1970-01-01
    • 2015-12-30
    • 1970-01-01
    相关资源
    最近更新 更多