2016-08-06 24 views
0

使用Flask創建一個簡單的前端,我可以選擇多個文件並對其執行一些計算。使用Flask App Builder上傳多個文件

目前我使用下面的代碼,但它只有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次重複,直到命中閾值或提交。

我現在使用的瓶應用構建得到我的前端右側。

回答

0

您可以使用此HTML表單,這將允許用戶選擇多個文件:

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

然後在你的上傳功能,你使用的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 
+1

我已經讀過這個解決方案。但是因爲我使用的是燒瓶應用程序構建器,所以裝飾器和東西似乎不一樣 – BernardL

+0

我會在燒瓶應用程序構建器的實現中編輯這個答案。 – Harrison

+0

欣賞它。謝謝!嘗試設計Web框架時遇到問題。 – BernardL