当用户上传文件时,我会收到一个zip
文件。这个zip
文件实际上包含了一个json
文件,我想要在不必先创建zip
文件、解压缩它,然后读取内部文件内容的情况下读取和处理它。
目前我只有以下更长的处理过程:
import json
import zipfile
@csrf_exempt
def get_zip(request):
try:
if request.method == "POST":
try:
client_file = request.FILES['file']
file_path = "/some/path/"
# first dump the zip file to a directory
with open(file_path + '%s' % client_file.name, 'wb+') as dest:
for chunk in client_file.chunks():
dest.write(chunk)
# unzip the zip file to the same directory
with zipfile.ZipFile(file_path + client_file.name, 'r') as zip_ref:
zip_ref.extractall(file_path)
# at this point we get a json file from the zip say `test.json`
# read the json file content
with open(file_path + "test.json", "r") as fo:
json_content = json.load(fo)
doSomething(json_content)
return HttpResponse(0)
except Exception as e:
return HttpResponse(1)
如您所见,这涉及到3个步骤才能最终将
zip
文件中的内容加载到内存中。我想要的是直接获取zip
文件的内容并直接加载到内存中。我在stackoverflow上找到了一些类似的问题,比如这个https://dev59.com/ZHE95IYBdhLWcg3wE56C#2463819。但我不确定在何时调用此操作。
我该如何实现这个功能?
注意:我正在使用django作为后端。zip文件中始终会有一个json文件。