2011-07-09 7 views
3

私はいくつかのファイルの検証をしていて、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のどちらも、この特定のインスタンスでは大いに役立つようです。

答えて

5

UploadedFile.temporary_file_path

Only files uploaded onto disk will have this method; it returns the full path to the temporary uploaded file.

+0

私は、ドキュメントではなく、私はそれが正常に動作させることはできません...私は上記の私のコードを追加しますことを見ました。 Thanks –

+1

'UploadedFile'インスタンスのtemporary_file_pathメソッドにアクセスする必要があります。あなたのインスタンスが名前ファイルの場合は、 'file.temporary_file_path()'のようにパスにアクセスします。 – rzetterberg

+0

ありがとう@アンサイド! –

関連する問題