如何在Django中获取上载文件的临时名称?

如何在Django中获取上载文件的临时名称?,django,django-validation,django-file-upload,Django,Django Validation,Django File Upload,我正在进行一些文件验证,希望在将上载的文件保存到某个可以执行的位置之前,将其加载到“/tmp”目录下的外部库中。Django做了以下工作: Django将上传的文件写入存储在系统临时目录中的临时文件。在类Unix平台上,这意味着您可以期望Django生成一个名为/tmp/tmpzfp6I6.upload的文件 我希望能够接触到的是“tmpzfp616.upload”。UploadedFile.name给了我“”而file.name给了我文件的正确名称“example.mp3” 对于我正在使用的库

我正在进行一些文件验证,希望在将上载的文件保存到某个可以执行的位置之前,将其加载到“/tmp”目录下的外部库中。Django做了以下工作:

Django将上传的文件写入存储在系统临时目录中的临时文件。在类Unix平台上,这意味着您可以期望Django生成一个名为/tmp/tmpzfp6I6.upload的文件

我希望能够接触到的是“tmpzfp616.upload”。UploadedFile.name给了我“”而file.name给了我文件的正确名称“example.mp3”

对于我正在使用的库,我需要将临时文件的文件路径传递给库,而不是文件本身,因此需要字符串

有什么想法吗

提前谢谢

编辑:这是我的代码:

    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 
使用“UploadedFile”我会得到一个AttributeError“类型对象‘UploadedFile’没有属性‘临时文件路径’。如果我改为使用file.temporary文件路径(这里只是在黑暗中投掷省道),我会得到一个IOError:

[Errno 2]没有这样的文件或目录:'bind method TemporaryUploadedFile.temporary\u file\u path of>'

我意识到临时文件路径是我正在寻找的解决方案,我只是不知道如何使用它,在这个特殊的例子中,文档和谷歌似乎都没有多大帮助。

只有上传到磁盘上的文件才会使用此方法;它返回临时上传文件的完整路径


我在文档中看到了这一点,但我无法使其正常工作…我将在上面添加我的代码。谢谢您需要访问
上载文件
实例上的临时文件路径方法。如果您的实例是名称文件,则访问路径如下:
文件。临时文件路径()
.N.B.这似乎只有在上载的文件足够大,可以写入临时目录时才起作用。据我所知,如果文件太小,文件将保留在内存中,因此,不存在文件路径,因为文件不在文件系统中。