【问题标题】:Uploaded image is broken after writing to file写入文件后上传的图像损坏
【发布时间】:2015-05-14 09:19:13
【问题描述】:

我有一张从帖子请求中获得的图片。我想将它保存在我的文件目录中。我使用以下代码将其写入文件,但之后文件不显示图像。如何正确保存文件?

img = form.imagen.data
filename = secure_filename(img)
path=os.path.join(app.config['UPLOAD_FOLDER'], filename)
with open(path, 'wb+') as f:
    f.close()

【问题讨论】:

  • 我没有看到任何实际写入的代码
  • 嗯,你认为我应该做一个 f.write() 吗?但它需要一个参数,我应该使用 f.write(img) 吗?因为我已经尝试过了,但它没有正确保存图像
  • 是的,这就是你所需要的
  • 但它没有正确保存图像并且它还说 builtins.TypeError TypeError: 'str' does not support the buffer interface
  • 我快速查看了文档。看来你应该可以做到form.imagen.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))。假设 imagen 是我认为的

标签: python flask


【解决方案1】:

不要自己打开和编写文件,请使用 Flask 框架为您抽象该文件

img = request.files['imugen']
filename = secure_filename(img.filename)
img.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))

【讨论】:

  • 它显示 builtins.AttributeError AttributeError: '_io.BufferedRandom' 对象没有属性 'replace'
【解决方案2】:

好吧找到问题了,就是这行代码

filename = secure_filename(img)

感谢 Leon 和其他人,它使用图像中的读取方法工作并将其写下来:

img = form.imagen.data
path=os.path.join(app.config['UPLOAD_FOLDER'], img.filename)
with open(path, 'wb+') as f:
    f.write(img.read())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2017-08-29
    • 2012-07-19
    • 1970-01-01
    相关资源
    最近更新 更多