Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django是否关闭并删除临时上载的文件和InMemoryUploadedFile?_Django_File_Django Models_Multipartform Data_Temporary Files - Fatal编程技术网

Django是否关闭并删除临时上载的文件和InMemoryUploadedFile?

Django是否关闭并删除临时上载的文件和InMemoryUploadedFile?,django,file,django-models,multipartform-data,temporary-files,Django,File,Django Models,Multipartform Data,Temporary Files,我已经通读了所有关于临时上传文件和InMemoryUploadedFile的文档,但他们从来没有谈到清理。我知道Python临时文件需要关闭才能自动删除 @api_view(['POST', ]) def test(request): #img is type InMemoryUploadedFile for img in request.FILES.getlist('images'): Model.objects.image = img Mode

我已经通读了所有关于临时上传文件和InMemoryUploadedFile的文档,但他们从来没有谈到清理。我知道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()

在上面的代码中,临时上载的文件和InMemoryUploadedFile是否自动删除和清理?

这些文件关闭后,WSGI处理程序可以提供一个名为
close
的方法,该方法称为请求后处理

Django源代码(http/request.py)

编辑:


Django在内存和临时文件中全局配置两种类型的文件上传器。所有这些类都实现了
close
方法,
request
对象的close方法注册为
\u resource\u closer
,这些方法是从
HttpResponseBase
close
方法调用的。

对于InMemoryPloadedFile也是这样吗?它是否在使用后立即从内存中清除?内存中的文件也会关闭。这种情况在不调用.close()的情况下发生?WSGI处理程序将调用
request.close
并在打开的文件上关闭。
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()