【问题标题】:Uploading multiple files with Flask App Builder使用 Flask App Builder 上传多个文件
【发布时间】:2016-12-12 16:43:39
【问题描述】:

使用 Flask 创建一个简单的前端,我可以在其中选择多个文件并对其进行一些计算。

目前我正在使用下面的代码,但它只适用于 1 个文件,#do something 是发生转换的地方;

class Sources(SimpleFormView):
    form = MyForm
    form_title = 'This is my first form view'
    message = 'My form submitted'

    def form_get(self, form):
        form.field1.data = 'This was prefilled'

    def form_post(self, form):
        x = #do something
        return self.render_template('test.html', table = x ,name='TEST')

表单基本上可以让我输入如下所示的路径:

from wtforms import Form, StringField
from wtforms.validators import DataRequired
from flask.ext.appbuilder.fieldwidgets import BS3TextFieldWidget
from flask.ext.appbuilder.forms import DynamicForm


class MyForm(DynamicForm):
    Path = StringField(('Field1'),
        description=('Your field number one!'),
        validators = [DataRequired()], widget=BS3TextFieldWidget())

我正在尝试从本地计算机中选择多个文件,然后将它们一起处理。很像我们使用 Gmail 附加文件的方式;

  1. 选择文件路径的选项
  2. 打开文件浏览器
  3. 存储文件路径
  4. 重复流程 1 和 3,直到达到阈值或提交。

我目前正在使用 Flask App Builder 来完善我的前端。

【问题讨论】:

    标签: python html flask flask-wtforms flask-appbuilder


    【解决方案1】:

    您可以使用此 HTML 表单,允许用户选择多个文件:

    <form method="POST" enctype="multipart/form-data" action="/upload">
      <input type="file" name="file[]" multiple="">
      <input type="submit" value="Upload Files">
    </form>
    

    然后在您的上传功能中使用 Flask 中的 getlist 功能。

    @app.route("/upload", methods=["POST"])
    def upload():
        uploaded_files = flask.request.files.getlist("file[]")
        print uploaded_files
        return ""
    

    我建议附加你的做某事函数以接受所有文件的列表作为输入。然后做类似的事情

    For file in uploaded_files:
        Process the files
    

    【讨论】:

    • 我实际上已经阅读了该解决方案。但是因为我使用的是烧瓶应用程序构建器,所以装饰器和东西似乎有所不同
    • 我稍后会编辑这个答案,并实现烧瓶应用程序生成器。
    • 欣赏它。谢谢!我在尝试设计 Web 框架时遇到了麻烦。
    • 谢谢,是的,我会用 for 调用该函数。但是对烧瓶应用程序构建器的实现有什么想法吗?
    猜你喜欢
    • 2012-08-02
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    • 2021-07-01
    • 2016-06-09
    • 2019-05-15
    • 2020-12-15
    • 2018-01-06
    相关资源
    最近更新 更多