2017-06-27 15 views
2

ファイルをアップロードするとき、django-formtoolsフォームウィザードは、ユーザがウィザードのすべてのステップを完了するまで、一時的にフォームを保存する場所が必要です。Django FormToolsフォームウィザードでデフォルトファイルストレージ(S3)を使用してファイルをアップロードするにはどうすればよいですか?

FormTools documentationは、サーバー上のローカルフォルダにファイルをアップロードする方法の例を示しています。ファイルをアップロードするにはfile_storage設定が必要です。

from django.core.files.storage import FileSystemStorage 

class CustomWizardView(WizardView): 
    file_storage = FileSystemStorage(location=os.path.join(settings.MEDIA_ROOT, 'photos')) 

私たちはHerokuを使用しており、ファイルをアップロードするときにローカルストレージにアクセスできません。私たちはdjango-storageとS3を使ってすべてのファイルを保存します。アップロードプロセスを管理するために、django-storageを使用したいと思います。

デフォルトのストレージシステムを使用してこのファイルをS3上の一時的な場所にアップロードできるように、このビューを変更するにはどうすればよいですか?

+0

ファイルは、少なくとも本番サーバーの一時的な場所に保存されますか?または、あなたは単にメモリファイルオブジェクトを取得でき、保存できません。 –

+0

@ArpitSolankiはい、コード例で構成されているように、ファイルは一時的な場所に保存されます。私はちょうどそれがサーバーに保存されていないようにします。これは主に、プロダクションではサーバーに保存できないためです。私はformtoolsが物理的なファイルを望んでいるので、メモリが動作するとは思いません。 – citadelgrad

答えて

0

この設定では、ファイルをdjangoプロジェクトのデフォルトのストレージバックエンドに直接アップロードできます。あなたはdocumentationでそれがどのように動作するかについて読むことができます。

from django.core.files.storage import DefaultStorage 

class CustomWizardView(WizardView): 
    ... 
    file_storage = DefaultStorage() 
関連する問題