首页 > 解决方案 > 在 Flask 中将图像保存为错误文件(0 字节)

问题描述

当我使用烧瓶保存图像时,它保存为一个 0 字节的文件

from flask import Flask, render_template, redirect, request, url_for
from inference import predict_breed_transfer
import os
import io
from PIL import Image
from werkzeug.utils import secure_filename

UPLOAD_FOLDER = './static'
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg'}

app = Flask(__name__)
app.config['SECRET_KEY'] = 'super secret key'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

def allowed_file(filename):
    return '.' in filename and \
           filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

@app.route('/')
def hello():
    return render_template("index.html")

@app.route('/', methods = ['POST'])
def submit_data():
    if request.method == 'POST':
        file = request.files['file']
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            image = file.read()
            predicted_breed = predict_breed_transfer(image_bytes = image)
            imag = Image.open(io.BytesIO(image))
            imag.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
            result_dic = {
                'im' : filename,
                'breed' : predicted_breed
            }
            return render_template('index.html', dog=result_dic)
        return render_template("index.html")

if __name__ == '__main__':
    app.run()

请帮我解决一下这个。此外,为了您的帮助,该项目托管在https://dog-identification.herokuapp.com/

保存图片后创建的图片属性截图

标签: pythonpython-3.xflask

解决方案


保存之前写:

file.seek(0)

上面两行,你读取了文件,所以你应该先放光标然后保存!


推荐阅读