2010-02-01 94 views
1

使用WSGI,webob和PIL,我試圖直接從請求文件中使用Image.open()。但是,Image.open()始終引發「無法識別圖像文件」異常。該圖像是唯一的字段,不使用其他POST或GET變量。該文件來自enctype =「multipart/form-data」的標準HTML上傳表單。使用PIL打開POST文件圖片

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

我的猜測是,我沒有在上傳的圖像數據正確加載,但我不知道什麼是正確的方式做這將是。

+0

當你說它是「發佈」,你的意思是你正在使用一個特殊的工具發佈一個請求與身體'Content-Type:image/png'?或者你只是說你有一個只有一個字段的瀏覽器和'multipart/form-data'形式,一個''?如果是後者,那麼你仍然需要用通常的方式解析表單,以使文件上傳字段不在其中。 – bobince 2010-02-01 14:39:42

+0

它是後者,這是一個標準的HTML文件上傳表單。 – 2010-02-01 17:30:06

回答

3

我不是famaliar與webob,但我的猜測是body_file包含整個帖子的內容,而不僅僅是你的形象。 docs似乎證實了這一點。

什麼是req.POST ['nameOfFileControl']?它有文件句柄嗎?這將是Image.open需要的文件句柄。