私はいくつかのファイルの検証をしていて、UploadedFileを実行することができる場所に保存する前に、 '/ tmp'ディレクトリにある間にUploadedFileを外部ライブラリに読み込みたいとします。 Djangoは次のことを行います。DjangoでUploadedFileの一時的な名前を取得するにはどうすればよいですか?
Django will write the uploaded file to a temporary file stored in your system's temporary directory. On a Unix-like platform this means you can expect Django to generate a file called something like /tmp/tmpzfp6I6.upload.
それはIHE file.nameが私にファイルの適切な名前を与えながら、 『「私は私の手を得ることができるようにしたいtmpzfp616.upload」UploadedFile.nameが私に与えます。』 「example.mp3」。
私が使用しているライブラリでは、私は文字列を必要とするので、むしろファイルそのものよりも、図書館に一時ファイルのファイルパスを渡す必要があります。
任意のアイデア?
ありがとうございます。
"にUploadedFileは、" 私ははAttributeError "型オブジェクト 'にUploadedFileは' いいえ属性 'temporary_file_path' がありません" を取得使用from django.core.files.uploadedfile import UploadedFile
class SongForm(forms.ModelForm):
def clean_audio_file(self):
file = self.cleaned_data.get('audio_file',False)
if file:
[...]
if file._size > 2.5*1024*1024:
try:
#The following two lines are where I'm having trouble, MP3 takes the path to file as input.
path = UploadedFile.temporary_file_path
audio = MP3('%s' %path)
except HeaderNotFoundError:
raise forms.ValidationError("Cannot read file")
else:
raise forms.ValidationError("Couldn't read uploaded file")
return file
:
編集:ここに私のコードです。私が代わりに私は例外IOErrorを取得する(ちょうどここに暗闇の中でダーツを投げる)file.temporary_file_pathを使用する場合:
[Errno 2] No such file or directory: 'bound method TemporaryUploadedFile.temporary_file_path of >'
私はtemporary_file_pathは私が探しているソリューションであると認識、私はちょうど使用する方法を見つけ出すことはできませんそれは、ドキュメントやGoogleのどちらも、この特定のインスタンスでは大いに役立つようです。
私は、ドキュメントではなく、私はそれが正常に動作させることはできません...私は上記の私のコードを追加しますことを見ました。 Thanks –
'UploadedFile'インスタンスのtemporary_file_pathメソッドにアクセスする必要があります。あなたのインスタンスが名前ファイルの場合は、 'file.temporary_file_path()'のようにパスにアクセスします。 – rzetterberg
ありがとう@アンサイド! –