【发布时间】:2017-11-12 12:30:56
【问题描述】:
所以我得到了让用户输入图像的 HTML 代码:
<label class="tab-item"> Browse
<span class="icon icon-more"></span>
<input type="file" accept="image/*" name="image_save" value="image_save" onchange="updatePhoto(event);"></input>
</label>
#some more code
<form action="../api/save" method="post">
<button type="submit" name="image_save" class="btn btn-positive btn-block" href="../api.put" value="image_save">
Test Save
</button>
</form>
在一个 Python 文件中,我有:
@cherrypy.expose
def save(self, image_save=None):
f = open(image_save)
f.save("../photos/" + "test" + ".png", "PNG")
return "Image saved"
但是我得到了错误
IOError: [Errno 2] No such file or directory: u'image_save'"
你们将如何保存通过 HTML 代码给出的图像?什么类型的数据作为方法参数给出?
【问题讨论】:
-
您收到错误是因为您的
image_save参数设置为None;你怎么能打开None类型的对象?open()需要提供路径(以及我相信的模式)。建议您也使用with open()进行文件 I/O,因为它会在所有嵌套代码完成后关闭。 -
@pstatix 据我所知,这是变量的初始值。在其他情况下,例如文本输入,它可以很好地与 None 配合使用。我只想知道如何在这种情况下进行图像保存,因为我在其他任何地方都找不到它。我什至不知道什么类型的数据被发送到变量。我可以以任何方式或类似方式使用 PIL 吗?那是我的问题。
-
如果您检查了错误日志/控制台,或者甚至测试打印出 image_save 的值,您会发现它没有被填充。我也没有得到接受参数。您不应该将其限制为 png/jpg/gif 吗? (然后检查 mime 类型以确保..)
-
@RachelGallen 那你会怎么做呢?我愿意接受建议。
-
@PioAvenger 是的,您可以将其作为
None类型启动,但如果您想使用open(),则必须在某个时候提供一个值;只看逻辑。如果我做了open(None)...它没有什么可以打开的!
标签: python html image cherrypy