13

私のforms.pyファイルには私が持っています

    class myForm(Form):
       fileName = FileField()

私のviews.pyファイルには

    form = myForm()
    if form.validate_on_submit():
        fileName = secure_filename(form.fileName.file.filename)

私の.htmlファイルには

     {% block content %}
     <form action="" method="post" name="simple" enctype="multipart/form-data">
        <p>
           Upload a file
             {{form.fileName()}}
         </p>
        <p><input type="submit" value="Submit"></p>
     </form>
     {% endblock %}

送信を押すと機能するようですが、ファイルはどのプロジェクトディレクトリにもありません。

4

3 に答える 3

29

あなたはこれを見ましたか:

https://flask.palletsprojects.com/en/2.0.x/patterns/fileuploads/#uploading-files

UPLOAD_FOLDERなどのいくつかの構成を設定する必要があります。また、views.pyの投稿されたコードには表示されないsave()関数を呼び出す必要があります。

file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
于 2013-01-29T18:39:48.563 に答える
11

form.fileName.fileで、「。save」を呼び出します。

filename = secure_filename(form.fileName.file.filename)
file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
form.fileName.file.save(file_path)

ユーザーが「../../../../home/username/.bashrc」などの不正なファイル名を入力しないように、必ずsecure_filename()を使用してください。

os.path.joinを使用すると、使用しているOSに関係なく、正しい絶対パスが生成されます。

于 2014-05-29T17:33:13.767 に答える
9

form.fileName.file.saveで.saveを呼び出す必要がありました

    myFile = secure_filename(form.fileName.file.filename)
    form.fileName.file.save(PATH+myFile)
于 2013-01-29T18:47:38.560 に答える