如何使用MultiFileField上传图像

时间:2019-05-03 18:04:18

标签: python flask flask-wtforms wtforms

我正在使用wtforms MultipleFileField为汽车销售商应用上传多张汽车图片。

我尝试使用MultiFileField,但由于它仅返回带有filename的字符串,因此无法将图像保存在我的静态文件夹中。 我尝试使用request.files.getlist(form.pics.name),但它总是返回空。 我不知道如何保存它们。

表格:

class VehicleForm(FlaskForm):
    .
    .
    .
    pics = MultipleFileField("File(s) Upload", validators=[FileAllowed(["jpg", "png"])])

    submit = SubmitField("Add")

routes.py:

form = VehicleForm()
if form.validate_on_submit():
    if form.pics.data:
        pics = request.files.getlist(form.pics.name)
        if pics:
            for pic in pics:
                #code to save the picture
                #this may work but i don´t know since pics return empty
                picture_contents = pic.stream.read()
                random_hex = secrets.token_hex(8)
                _, f_ext = os.path.splitext(pic.filename)
                picture_fn = random_hex + f_ext
                picture_path = os.path.join(app.root_path, f"static/vehicle_pics", picture_fn)
                i = Image.open(picture_contents)
                i.thumbnail(500, 400)
                i.save(picture_path)

我想找到一种保存图像的方法,但是找不到任何可行的解决方案。

0 个答案:

没有答案