Django 将文件保存到文件夹中
我想把文件保存到一个单独的文件夹里,但这个文件夹的名字是我从表单中获取的,我现在还不知道具体是什么。不过我现在有一个可以工作的表单,它会保存到 user_(某个东西)里。
有没有人能告诉我怎么定义模型类和视图,以便获取文件夹的名字,并把我上传的文件自动保存到这个单独的文件夹里?
models.py
def content_file_name(instance, filename):
return "user_{id}/{file}".format(id=instance, file=filename)
class Audio(models.Model):
audiofile = models.FileField(upload_to=content_file_name)
views.py
def saved_file(request):
# Handle file upload
if request.method == 'POST':
form = AudioForm(request.POST, request.FILES)
if form.is_valid():
newaudio = AudioForm()
newaudio = Audio(audiofile = request.FILES['audiofile'])
newaudio.save()
#This is for redirect to the file save_list after post
return HttpResponseRedirect(reverse('app.views.saved_file'))
else:
form = AudioForm()
# Load documents for the save_list page
showfiles = Audio.objects.all()
return render_to_response(
'audio/file_upload.html',
{'showfiles': showfiles, 'form': form},
context_instance=RequestContext(request)
)
1 个回答
0
你能把文件夹的名字放进你的模型里吗?然后再相应地修改一下 content_file_name
这个函数?
def content_file_name(instance, filename):
return "user_{id}/{folder}/{file}".format(id=instance, folder=instance.folder_name, file=filename)
class Audio(models.Model):
audiofile = models.FileField(upload_to=content_file_name)
folder_name = models.CharField(max_length=1000)