問題タブ [django-file-upload]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - 保存されたFileFieldからDjangoのUploadedFileにファイルをコピーする
request.FILESからではなく、別の保存されたレコードからファイルを保存する必要があります。
モデルレコードのコードは次のとおりです。
そして、ビュー(この場合MyForm
はRealRecordに保存するモデルフォームです):
つまり、基本的にはオブジェクトFieldFile
として使用されているということです。UploadedFile
それぞれFoo
に名前のFooFile
レコードと名前awesome_file
のレコードがmediocre_file
あり、の必須フィールドと一致しますRealRecord
。
クレイジーなことは、これは完全に検証されます。ただし、問題は、作成される結果のレコードで、awesome_fileとmediocre_fileの両方のパスが「foo_folder」にあることです。ただし、「foo_folder」内のファイルは必要ありません。の各フィールドに指定したパスにファイルを配置する必要がありますRealRecord
。
したがって、従来のUploadedFileのように動作し、それぞれのフィールドの値と値を取得するために、FieldFile
からの値に対して何ができるのか疑問に思っていると思います。FooField
upload_to
path
django - Django (オーディオ) ファイルの検証
ユーザーがオーディオ ファイルをアップロードできるサイトを試しています。手に入れることができるすべてのドキュメントを読みましたが、ファイルの検証についてはあまり見つかりません。
ここで完全な初心者(これまでにいかなる種類のファイル検証も行ったことがない)で、これを理解しようとしています。誰かが私の手を握って、私が知る必要があることを教えてもらえますか?
いつもありがとうございます。
django - これは、モデルに関連付けられているFileFieldが確実に削除されるようにする方法ですか?
FileFieldを持つモデルのインスタンスを削除すると、実際のファイルはMEDIA_ROOTフォルダーに残ります。これに対抗するために、私はpost_deleteシグナルをリッスンして、これを実行しています。
うまくいくようですが、このようにするのがベストプラクティスかどうかはわかりません。何かご意見は?
django - django:解凍したファイルをローカルディスクに登録する
【質問が長くなってしまいましたことをお詫び申し上げます。】
私は Debian スクイーズで Django 1.2.3-3+squeeze1 を使用しています。
zip ファイルをディスクの一時的な場所にアップロードして解凍し、結果を永続的な場所に保存するアプリケーションを作成しています。FileUpload
解凍されたファイルは、解凍後に呼び出されるクラスとしてデータベースに登録されます
。アップロードされた圧縮ファイルもクラスに対応していますが、この質問では無視します。FileUpload
このように見えます。
で定義されたフォームも使用しています
ディスク上の解凍されたファイルを取得する関数。それらをデータベースに登録し、 と呼ばれる正しい場所に移動します
addFile
。以前はこれを使用していました:
これは機能しましたが、問題はファイル全体をメモリにダンプすることでした。大きなファイルの場合、特に Python がメモリの経済性で知られていないことを考えると、これは大量のメモリを消費していました。だから私はこれに切り替えました:
UploadedFile
( に) 既に存在していた派生クラスはどれも、
django/core/files/uploadedfile.py
私が望んでいたことをしていないように見えたので、私は をサブクラス化することを余儀なくされました。
Django File Uploads docsが言うので、temporary_file_path
関数はそこにあります
UploadedFile.temporary_file_path()
ディスクにアップロードされたファイルのみがこのメソッドを持ちます。アップロードされた一時ファイルへのフル パスを返します。
後述するように、FileSystemStorage
クラスは関数内でこの属性を探して
いるようです。_save
n
が zip アーカイブ内のファイルの相対パスである場合、使用法は
これは機能しますが、コードをトレースしたところ、コードがストリーミングを使用していることがわかりました。この場合、ファイルを一時的な場所から永続的な場所にコピーすることが明らかに最適です。問題のコードは
、クラスdjango/core/files/storage.py
の_save
関数にあり
ます。FileSystemStorage
で_save
、name
は宛先の相対パスで、content
はFile
オブジェクトです。
関数は_save
属性 を探しています
temporary_file_path
。このコードは、 でtemporary_file_path
前述した関数
によってトリガーされることを意図していると思いますdjango/core/files/uploadedfile.py
。ただし、実際に渡される (content
引数に対応する) クラスはであり、このオブジェクト<class
'django.db.models.fields.files.FieldFile'>
の属性 dict ( ) は次のようになります。content.__dict__
は、データ メンバー内にあるクラスにtemporary_file_path
アタッチされ
ます。その
ため、それ自体ではなく、属性があり
ます。UnzippedFile
_file
content._file
temporary_file_path
content
これは、通常のファイルのアップロードがどのように見えるかです。ご覧のとおり、似ています。
FileUploadForm
save
コードがからStorage
オブジェクトに到達する方法を詳細に追跡することは困難です。特に Django フォームのコードはかなりあいまいです。
とにかく、私の質問は、このすべてのセットアップの後、以下の最初のオプションがどのように/いつfile_move_safe
アクティブになるはずですか? ここにミスマッチが見られます。これはバグですか?誰でも明確にできますか?
python - DjangoでオブジェクトのFileFieldをどのように変更しますか?
FileField(ドキュメント)を受け取るClassFileというモデルがあります。
request.FILES ['file']が明らかに存在しないため、ファイルアップロードフォームが送信された後に以下のClassFileインスタンスを保存しようとすると失敗します。
このオブジェクトを適切な方法で保存しているかどうか疑問に思いました。request.FILES ['file']は正しいタイプですか?ありがとうございました。
django - Djangoでは、どのようにforms.pyのファイルフィールドにアクセスできますか?
Django アプリケーションの forms.py にこのフォーム クラスがあります。
その名前を検証する clean 関数を介して検証のために、forms.py にアップロードされたファイルにアクセスしたいと思います。
ただし、問題は、「QueryDict」に「attachment」が見つからないというエラーが表示されることです。request.FILES を送信フォームにバインドしています。フォームで enctype="multipart/form-data" も使用しています。私は、forms.py で FileField データにアクセスする適切な方法は何だろうと思っていました。
ありがとうございました。
django - FileFields を使用して ModelForms のファイル アップロードでファイル タイプを制限するにはどうすればよいですか?
私の目標は、Django ModelForm の FileField を PDF と Word ドキュメントに制限することです。私がグーグルで検索した回答はすべて、別のファイルハンドラーの作成を扱っていますが、ModelForm のコンテキストでそれを行う方法がわかりません。アップロードするファイルの種類を制限するために使用できる settings.py の設定はありますか?
django - ファイルがインスタンスに保存されないのはなぜですか (ディスクに保存されます...)?
ファイルを指定したディスクに保存することはできますが、インスタンスに保存することはできず、その理由がまったくわかりません!
models.py
ビュー.py
handle_uploaded_file
song_upload.html (関連部分)
フォーム.py
ファイルは media/uploaded/music にありますが、管理者の audio_file は空白です。audio_file に blank=False (これがやりたいことです) を設定すると、このフィールドは必須であると言われます。何を与える??
前もって感謝します!しばらくこれに取り組んでいましたが、ドキュメントは私には軽いようです(初心者)。
django - DjangoでUploadedFileの一時的な名前を取得するにはどうすればよいですか?
私はいくつかのファイル検証を行っており、UploadedFile を実行できる場所に保存する前に、「/tmp」ディレクトリにある間に UploadedFile を外部ライブラリにロードしたいと考えています。Django は次のことを行います。
Django は、アップロードされたファイルをシステムの一時ディレクトリに保存されている一時ファイルに書き込みます。Unix ライクなプラットフォームでは、これは Django が /tmp/ tmpzfp6I6.uploadのような名前のファイルを生成することを期待できることを意味します。
手に入れたいのは「tmpzfp616.upload」です。 UploadedFile.name は「」を与え、file.name はファイルの適切な名前「example.mp3」を与えます。
私が使用しているライブラリでは、ファイル自体ではなく一時ファイルのファイルパスをライブラリに渡す必要があるため、文字列が必要です。
何か案は?
前もって感謝します。
編集:これが私のコードです:
「UploadedFile」を使用すると、「タイプ オブジェクト 'UploadedFile' には属性 'temporary_file_path' がありません」という AttributeError が表示されます。代わりに file.temporary_file_path を使用すると (ここで暗闇の中でダーツを投げるだけです)、IOError が発生します。
[Errno 2] そのようなファイルまたはディレクトリはありません: 'bound method TemporaryUploadedFile.temporary_file_path of >'
私はtemporary_file_pathが私が探している解決策であることを認識しています.
python - Django ImageField / FileFieldは、モデルのpkを使用してアップロードされたファイルを保存します
レガシーサイト(元々はレールで書かれていました)を変換していますが、デフォルトでは画像はフォーマットを使用して保存され{{pk}}.{{extension}}
、新しいファイルがアップロードされるとそのファイルは常に上書きされていました。このdjangoバージョンでそのフォーマットを継続したいと思います。
私は当初、FileSystemStorageを拡張するのが良い方法だと思っていましたが、現在のモデルオブジェクトをそれに渡す方法がわかりません。誰かがこれを達成するための「ジャンゴの方法」についての提案がありますか?
これを管理するために拡張する独自のクラスを作成する必要がある場合はImageField
、そうしてください。:)私が見逃している単純なものがあったかどうか疑問に思っています。
[編集] surfeurxとDrTyrsaからの回答に基づいて私がしたこと:
私が今抱えている本当の問題は、画像を上書きしたいということです。ImageField
これにより正しいファイル名が提供されますが、上書きするには拡張する必要があるようです。この小さな男を見つけました:http://djangosnippets.org/snippets/636/