11

私は Flask を学習しており、ここに記載されているファイルのアップロード パターンを試しています: http://flask.pocoo.org/docs/patterns/fileuploads/。Windows 7 の Firefox 12 で作業しており、ローカル マシンでアプリをデバッグ モードで実行しています。

UPLOAD_FOLDER 変数の値を除いて、例を逐語的にコピーしています。この変数はUPLOAD_FOLDER = '/uploads'、アプリケーション ルート (静的およびテンプレート ディレクトリと共に) に存在する "uploads" というディレクトリを作成しました。

ファイルをアップロードすると、次のエラーが表示されます。IOError: [Errno 2] No such file or directory: '/uploads\\u.png'

興味深いことに、アップロード フォルダーに生の文字列を指定すると、UPLOAD_FOLDER = r'C:\Python27\projects\Flask\myproject\uploads'.

ディレクトリを正しい方法で指定していませんか? アップロード ディレクトリを別の場所に配置する必要がありますか?

4

2 に答える 2

32

これを試してみませんか、それは私にとってはうまくいきます。

APP_ROOT = os.path.dirname(os.path.abspath(__file__))
UPLOAD_FOLDER = os.path.join(APP_ROOT, 'static/uploads')
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
于 2013-11-28T04:29:01.157 に答える
12

「/uploads」の先頭のスラッシュは、パスの指定を絶対的なものにします。先頭のスラッシュは、ファイル システム階層のルートを表します。これは Windows での正確な動作ではないかもしれませんが、パス処理関数はクロスプラットフォームであるため、Python がこのように理解することは理にかなっています。

'uploads/' と './uploads/' の形式は同等であり、相対的です。

相対パスは現在のディレクトリからの相対パスであり、必ずしも制御できるとは限らないことに注意してください。そのため、UPLOAD_FOLDER に絶対パスを指定することをお勧めします。

于 2012-05-17T14:51:10.553 に答える