使用PIL图像打开POST上传的文件

3 投票
1 回答
2573 浏览
提问于 2025-04-15 18:43

我正在使用WSGI、webob和PIL,想直接从请求中用Image.open()打开一个文件。不过,Image.open()总是抛出一个异常,提示“无法识别图像文件”。这个图像是唯一的字段,没有使用其他的POST或GET变量。这个文件是通过一个标准的HTML上传表单上传的,表单的编码类型是“multipart/form-data”。

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')

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

1 个回答

4

我对webob不太熟悉,但我猜测body_file里包含的是整个帖子(post)的内容,而不仅仅是你的图片。文档似乎也证实了这一点。

那req.POST['nameOfFileControl']里有什么呢?里面有文件句柄吗?这个文件句柄正是Image.open所需要的。

撰写回答