Django 中没有这样的文件或目录:'/tmp/tmp_ejr26m6.upload.mp3'

问题描述 投票:0回答:1

最近,当我在 Django 中遇到以下错误时,我调整了媒体文件的位置:

[Errno 2] No such file or directory: '/tmp/tmp1d93dhp7.upload.mp4'
。到目前为止,我已经在我的设置、视图和模型中检查了文件位置代码中的拼写错误。

该网站的工作原理是将用户上传的媒体文件简单地存储在媒体文件夹中。

相关代码如下:

views.py:

...
if form.is_valid() and 'file' in request.FILES:
                if not request.session.get('user_id'):
                    request.session['user_id'] = generate_unique_id()
                user_id = request.session.get('user_id')
                uploaded_file = request.FILES.getlist('file')

                
                for file in uploaded_file:
                    fs = FileSystemStorage(location=settings.MEDIA_ROOT)  # Use MEDIA_ROOT for permanent storage
                    filename = fs.save(file.name, file)
                    uploaded_file_path = fs.path(filename)
                    file_type = mimetypes.guess_type(uploaded_file_path)

                    request.session['uploaded_file_path'] = uploaded_file_path
                
                
                    #user_doc, created = RequirementsChat.objects.get_or_create(id=user_id)
                
                    user_doc, created = RequirementsChat.objects.get_or_create(id=user_id)
                    uploaded_file = UploadedFile(input_file=file, requirements_chat=user_doc, chat_id = user_id)
                    uploaded_file.save()
                    user_doc.save()
                #save details
                    user_doc, created = RequirementsChat.objects.get_or_create(id = user_id)
                    user_doc.alias = alias
                    user_doc.email = email
                    user_doc.language = language
                    user_doc.due_date = due_date
                    user_doc.subtitle_type = subtitle_type
                    user_doc.transcript_file_type = transcript_file_type
                    user_doc.additional_requirements = additional_requirements
                    user_doc.date = timezone.now()
                    user_doc.save()
                    return HttpResponse(status=200)
...

该错误似乎是由

uploaded_file.save()
行引起的(我使用打印语句进行确认。此行之后没有任何内容打印到控制台)。

models.py:

class RequirementsChat(models.Model):
    id = models.CharField(primary_key=True, max_length=40)
    alias = models.CharField(max_length=20, blank=True, null=True)
    email = models.CharField(max_length=100, blank=True, null=True)
    language = models.CharField(max_length=10, blank=True, null=True)
    due_date = models.CharField(max_length=10, blank=True, null=True)
    subtitle_type = models.CharField(max_length=10, blank=True, null=True)
    transcript_file_type = models.CharField(max_length=10, blank=True, null=True)
    additional_requirements = models.TextField(max_length=500, blank=True, null=True)
    date = models.DateTimeField(auto_now_add=True, blank=True, null=True)
    url = models.CharField(max_length=250, blank=True, null=True)
    task_completed = models.BooleanField(default=False)
    
class UploadedFile(models.Model):
    input_file = models.FileField(upload_to='human_upload/')#new
    chat_id = models.CharField(max_length=40, null= True)
    requirements_chat = models.ForeignKey(RequirementsChat, on_delete=models.CASCADE, related_name='uploaded_files', null=True)

设置.py:


MEDIA_URL='/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

urls.py:

urlpatterns = [
    path('', include('homepage.urls')),#redirects to transcribe/,
    path('transcribe/', include('transcribe.urls')),
    path('human/', include('human.urls')),
    path('admin/', admin.site.urls),
]+ static(
settings.MEDIA_URL, document_root=settings.MEDIA_ROOT
)

我的媒体文件夹结构是

mysite > media> human_uploads

python django file
1个回答
0
投票

问题:-

class UploadedFile(models.Model):
    input_file = models.FileField(upload_to='human_upload/')#new

还有

My media folder structure is mysite > media> human_uploads 

查看上传路径。上面两个是不一样的。

答案:-

使它们保持相同的路径。


感谢@jepozdemir 的评论。

© www.soinside.com 2019 - 2024. All rights reserved.