2017-08-11 11 views
1

私はアップロード/ダウンロードサービスを楽しいものにしていますが、誰でもwww.mysite.comを訪れることができるため、静的ディレクトリ以外のファイルを扱うのに苦労しています/ staticと内容を表示します。Flaskを使ってファイルを静的ディレクトリから外す

これはこれまで私が行ってきたことです。私のネットワークストレージの醜いパスを許し:)

if not os.path.exists('\\ATTILA\\Development\\GIT\\MyCloud\\static\\'+ session['username']): 
     os.makedirs('\\\\ATTILA\\Development\\GIT\\MyCloud\\static\\'+ session['username']) 

    #Download links for all files 
    pathing = [] 
    my_path = '\\\\ATTILA\\Development\\GIT\\MyCloud\\static\\'+ session['username'] + '\\' 
    os.chdir('\\\\ATTILA\\Development\\GIT\\MyCloud\\static\\'+ session['username']) 
    for myfile in glob.glob('*'): 
     downs = my_path + myfile 
     pathing.append(tuple([downs, myfile])) 

私のテンプレートでは、私はループ

{% for myfile, name in pathing %} 
    <a href='{{ myfile }}' download>{{ name }}</a><br> 
{% endfor %} 

のための簡単なを持っているので、私の見解は次のようになります。

enter image description here

として、それは私のファイルがダウンロード可能であることを意味しますが、ダウンロードのファイルパスを '静的'以外のフォルダに変更すると、ダウンロードリンクの代わりに404エラーが発生しますintにURL +ファイルパスのようにwww.mysite.com\ATTILLA\Development\some_other_folderどのような提案?

答えて

1

アプリを実稼働環境に配置するには、スタティックファイルを提供するnginxなどのソリューションが必要です。 通常、開発段階では、定期的な静的ファイル(css、jsなど)を持つFlaskが動作します。それは正常です。 プライベートデータやアップロードしたファイルを非表示にするには、次のようなものを使用する必要があります。

from flask import Flask, make_response 
... 
@app.route('/file_downloads/<filename>') 
def file_downloads(filename): 
    headers = {"Content-Disposition": "attachment; filename=%s" % filename} 
    with open('../tmp/you_private_file.zip', 'r') as f: 
     body = f.read() 
    return make_response((body, headers)) 
関連する問題