Django中找不到文件或目录:'/tmp/tmp_ejr26m6.upload.mp3
我最近在调整媒体文件的位置时,遇到了一个错误:[Errno 2] No such file or directory: '/tmp/tmp1d93dhp7.upload.mp4'
,这是在使用Django的时候出现的。目前我已经检查过设置、视图和模型中的文件路径代码,确认没有拼写错误。
这个网站的工作原理是将用户上传的媒体文件简单地存储在一个媒体文件夹里。
以下是相关的代码:
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)
settings.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_upload
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的评论。