我已经阅读了TemporaryUploadedFiles和InMemoryUploadedFiles的所有documentation,但他们从未谈论过清理。我知道Python临时文件需要关闭才能自动删除。
@api_view(['POST', ])
def test(request):
#img is type InMemoryUploadedFile
for img in request.FILES.getlist('images'):
Model.objects.image = img
Model.save()
#vid is type TemporaryUploadedFile
for vid in request.FILES.getlist('videos'):
Model.objects.video = vid
Model.save()
在上面的代码中,是否会自动删除并清理TemporaryUploadedFiles和InMemoryUploadedFiles?
这些文件已关闭,WSGI处理程序可以提供一种称为close
的方法,该方法称为请求的后处理。
Django源代码(http / request.py)
class HttpRequest:
...
def close(self):
if hasattr(self, '_files'):
for f in chain.from_iterable(list_[1] for list_ in self._files.lists()):
f.close()
编辑:
Django全局配置文件上传器InMemory和Temp文件的两种类型。所有这些类都实现close
方法,request
对象的close方法注册为_resource_closers
,并从HttpResponseBase
的close
方法调用这些方法。