2016-12-12 1 views
1

私はファイルアップロードフィールドを持つフォームを持っています、私はまた、承認されたファイルタイプのリストを含む変数を作成しました。私もそうこれらのみにするために...私の機能に組み込むために...私は、次の変数を使用しない方法を特定のフォルダにユーザーは自分のフォームにアップロードできるファイルの種類を制限するにはどうすればよいですか?

FILE_TYPES = set(['txt', 'doc', 'docx', 'odt', 'pdf', 'rtf', 'text', 'wks', 'wps', 'wpd']) 

を行くために

if form.validate_on_submit(): 
    flash('Form successfully submitted') 
    print "Form successfully submitted" 
    filename = secure_filename(form.file_upload.data.filename) 
    form.file_upload.data.save('uploads/' + filename) 
    return redirect('home') 
else: 
    filename = None 
    print(form.errors) 
    return render_template('index.html', 
          title='Application Form', 
          form=form, 
          filename=filename) 

をアップロードをルーティングしましたファイルタイプを使用できますか?ここで

+1

あなたは'FILE_TYPES'セットに対してチェックを追加する必要があります。ここのパターンは良い例です:http://flask.pocoo.org/docs/0.11/patterns/fileuploads/ – abigperson

+0

私はこのガイドに従おうとしましたが、これをどのように組み込むかのプロセスを理解することができません私の機能。 –

答えて

1

があなたの現在の機能を使用して実際に簡単な例ですが、あなたはFile Upload Pattenからの例を使用して、この時に改善することができますが、この最小限に提出拡張子があなたFILE_TYPESセット内にあるかどうかを確認する方法を示しています。

if form.validate_on_submit(): 
    flash('Form successfully submitted') 
    print "Form successfully submitted" 
    submit_name = form.file_upload.data.filename 
    if '.' in submit_name and submit_name.rsplit('.', 1)[1] in FILE_TYPES: 
     filename = secure_filename(submit_name) 
     form.file_upload.data.save('uploads/' + filename) 
     return redirect('home') 
    else: 
     flash('File (%s) is not an accepted format' % submit_name) 
     print submit_name 
else: 
    flash('form failed validation') 
filename = None 
print(form.errors) 
return render_template('index.html', 
         title='Application Form', 
         form=form, 
         filename=filename) 
関連する問題