2017-07-29 68 views
1

我一直在嘗試使用jqxUploadFiles,而不是PHP我需要使用python。使用Python上傳函數

在下面的代碼中;

from flask import request 
from flask.ext.uploads import UploadSet, configure_uploads, ALL 

def upload_file(): 

    files = UploadSet('files', ALL) 
    app.config['UPLOADED_FILES_DEST'] = '/uploads' 
    configure_uploads(app, files) 
    filename = files.save(request.files['files']) 
    return filename 

其中app = Flask(__name__)

,但在這個項目有;

main = Blueprint('main', __name__) 

在那裏使用像@main.route('/', methods=['GET', 'POST'])

並有一個create_app功能;

def create_app(): 
    app = Flask(__name__) 
    app.config.from_object(config['development']) 

    with app.app_context(): 
     db.app = app 
     db.init_app(app) 
     db.create_all() 

它用在manage.py文件中;

app = create_app() 
manager = Manager(app) 


def make_shell_context(): 
    return dict(app=app, db=db) 
manager.add_command("shell", Shell(make_context=make_shell_context)) 


@manager.command 
def test(): 
    """Run the unit tests.""" 
    import unittest 
    tests = unittest.TestLoader().discover('tests') 
    unittest.TextTestRunner(verbosity=2).run(tests) 


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

所以我需要使用的功能,如「upload_file()」,但我不明白「應用」,由「create_app()」和藍圖(創建)如何與對方和我如何使用它在upload_file()中。

回答

0

起初,你最好使一個文件定義爲app,並從其他腳本文件中使用它。

使用此app,您可以註冊Blueprint對象。

下面的例子實際上是一個工作的腳本。

app.py

from flask import Flask 

app = Flask(__name__) 

main.py

from flask import Blueprint 
from flask_script import Server, Manager, Shell 
from view import top 
from app import app 

app.register_blueprint(top.main) 

if __name__ == '__main__': 
    app.run(host='192.168.33.40') # please change host 

view/top.py

from flask import Blueprint 
main = Blueprint("top", __name__, url_prefix="/") 

from flask import request, render_template, redirect 
from flask.ext.uploads import UploadSet, configure_uploads, ALL 

from app import app 

def upload_file(): 

    files = UploadSet('files', ALL) 
    app.config['UPLOADED_FILES_DEST'] = '/tmp' # please change 
    configure_uploads(app, files) 
    filename = files.save(request.files['files']) 
    return filename 

@main.route('/', methods=['GET']) 
def index(): 
    return render_template('top/index.html') 

@main.route('upload', methods=['GET', 'POST']) 
def upload(): 
    upload_file() 
    return redirect('/') 

templates/top/index.html

<form method=POST enctype=multipart/form-data action="/upload"> 
    <input type=file name=files> 
    <input type=submit value=upload> 
</form> 

如果您有任何疑問,請提出任何問題!

+0

謝謝你的回答,但它似乎有一件事,我必須檢查小部件內,類似的代碼與一個簡單的HTML工作,但與小部件,我不斷收到錯誤的請求錯誤。 – Berk