存储文件的方式与文件是否通过Ajax来无关。您的视图仍然需要处理多部分表单数据,并将其存储在数据库和服务器文件系统中,就像Django中任何其他上载的文件一样。
就模型而言,这样的东西怎么样?
class TemporaryFileWrapper(models.Model):
"""
Holds an arbitrary file and notes when it was last accessed
"""
uploaded_file = models.FileField(upload_to="/foo/bar/baz/")
uploading_user = models.ForeignKey(User)
uploaded = models.DateTimeField(blank=True, null=True, auto_now_add=True)
last_accessed = models.DateTimeField(blank=True, null=True,
auto_now_add=False, auto_now=False)
def read_file(record_read=True):
#...some code here to read the uploaded_file
if record_read:
self.last_accessed = datetime.datetime.now()
self.save()
用于基本文件上传处理
see the official documentation
,但如果示例具有handle_uploaded_file()方法,则需要一些代码来创建临时文件包装器对象,
某物
这样,根据您的需要:
....
form = ProviderSelfEditForm(request.POST, request.FILES) #this is where you bind files and postdata to the form from the HTTP request
if form.is_valid():
temp_file_wrapper = TemporaryFileWrapper()
temp_file_wrapper.uploaded_file =
form.cleaned_data['name_of_file_field_in_your_form']
temp_file_wrapper.uploading_user = request.user #needs an authenticated user
temp_file_wrapper.save()
return HttpResponseRedirect('/success/url/')