python - 如何限制用户可以上传到我的表单的文件类型?

标签 python file-upload flask wtforms

我有一个包含文件上传字段的表单,我还制作了一个包含已批准文件类型列表的变量。我还将上传路由到某个文件夹中如何使用以下变量...

FILE_TYPES = set(['txt', 'doc', 'docx', 'odt', 'pdf', 'rtf', 'text', 'wks', 'wps', 'wpd'])

纳入我的职能...

if form.validate_on_submit():
    flash('Form successfully submitted')
    print "Form successfully submitted"
    filename = secure_filename(form.file_upload.data.filename)
    form.file_upload.data.save('uploads/' + filename)
    return redirect('home')
else:
    filename = None
    print(form.errors)  
    return render_template('index.html',
                            title='Application Form',
                            form=form,
                            filename=filename)

要使其只能使用这些文件类型?

最佳答案

这是一个使用当前函数的非常简单的示例,您可以使用 File Upload Patten 中的示例对此进行改进,但这最低限度地显示了如何检查提交的扩展名是否在您的 FILE_TYPES 集中:

if form.validate_on_submit():
    flash('Form successfully submitted')
    print "Form successfully submitted"
    submit_name = form.file_upload.data.filename
    if '.' in submit_name and submit_name.rsplit('.', 1)[1] in FILE_TYPES:
        filename = secure_filename(submit_name)
        form.file_upload.data.save('uploads/' + filename)
        return redirect('home')
    else:
        flash('File (%s) is not an accepted format' % submit_name)
        print submit_name
else:
    flash('form failed validation')
filename = None
print(form.errors)  
return render_template('index.html',
                        title='Application Form',
                        form=form,
                        filename=filename)

关于python - 如何限制用户可以上传到我的表单的文件类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41105700/

相关文章:

Python Flask 错误 "missing required positional arguments"(即使已提供)

python - 异步运行 Flask-Mail

python - 无法在 Python 中获取重定向的 URL。尝试使用 requests、urllib、urllib2 和 mechanize

ruby-on-rails-3 - 使用 FasterCSV 导入 CSV 文件时出现问题

javascript - 在 Chrome 中上传文件时点击 'Cancel' 清除值

python - 正确终止在线程中运行的 Flask Web 应用程序

python - Flask-WTF 表单填充整数字段和单选字段

python - 将对象转换为时间 Pandas 并在时间之间进行过滤

python - Django 基于类的 View - 意外的装饰器行为

javascript - 如何在运行时使用 blueimp fileupload 从当前上传队列中跳过文件