2017-07-29 7 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.route('/', methods=['GET', 'POST'])

ように使用及びcreate_app機能がある

main = Blueprint('main', __name__) 

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