【问题标题】:Python Bottle File UploadPython 瓶文件上传
【发布时间】:2013-10-06 04:01:23
【问题描述】:

以下代码使用 Bottle 框架成功上传图片文件。

upload = bottle.request.files.get("filPhoto01")
if upload is not None:
    name, ext = os.path.splitext(upload.filename)

    if ext not in ('.png','.jpg','.jpeg'):
        return "File extension not allowed."

    save_path = "/tmp/abc".format(category=category)
    if not os.path.exists(save_path):
        os.makedirs(save_path)

    file_path = "{path}/{file}".format(path=save_path, file=upload.filename)

    with open(file_path, 'w') as open_file:
        open_file.write(upload.file.read())

但是,当我在上传后尝试手动打开此文件时,无法打开该文件。我可以看到正确大小的上传文件的图标(暗示整个图像已上传),但我无法在任何应用程序中查看它,如 MS Paint 等。

我也尝试在我的 Web 应用程序中引用该文件,但它也没有在那里呈现。可能有什么问题?

【问题讨论】:

  • 不确定"/tmp/abc".format(category=category) 的作用——它是一个没有占位符的字符串常量,所以.format(...) 调用对其没有影响;另外,我建议使用os.path.join 而不是对/ 进行硬编码。
  • 如果我因为您指出的问题而避免使用 file_path 变量,而是使用“open(upload.filename, 'w')”来测试上面的代码,它仍然不能解决问题...我知道这又是硬编码...但我想成功执行上传并查看文件

标签: python image file upload bottle


【解决方案1】:

只是猜测,但由于您使用的是 Windows,因此您需要以二进制模式写入文件:

with open(file_path, 'wb') as open_file:

(另外,您没有提及您的 Python 版本,但仅供参考,在 Python 3 中,即使在 Linux 上您也需要使用二进制模式。)

【讨论】:

  • thanx... 这确实有帮助....(我的 python 版本在 windows 上是 2.7)...... python 文档确实指出可以使用二进制模式使其在所有平台,无论数据如何......再次感谢
猜你喜欢
  • 2016-08-30
  • 1970-01-01
  • 2017-12-03
  • 2011-03-27
  • 2018-12-30
  • 2020-08-30
  • 2020-11-10
  • 2016-12-01
  • 1970-01-01
相关资源
最近更新 更多