Django가 대용량 파일 다운로드 요청에 응답
과정과 코드를 간단하게 기록한다. 1. zip 파일로 압축한다.2. 블록별로 zip 파일을 읽고 반환
import os
import zipfile
from django.http import StreamingHttpResponse
def send_zipfile(path, suggestName):
def file_iterator(file_name, chunk_size=512):
with open(file_name, 'rb') as f:
while True:
c = f.read(chunk_size)
if c:
yield c
else:
break
def zipfolder(path, zipfileName):
tmp = os.path.join(path, zipfileName)
archive = zipfile.ZipFile(tmp, 'w', zipfile.ZIP_DEFLATED)
for d in os.listdir(path):
fp = os.path.join(path, d)
if fp != tmp and os.path.isfile(fp):
archive.write(fp, d)
archive.close()
return tmp
the_file_name = zipfolder(path, '%s.zip' % suggestName)
response = StreamingHttpResponse(file_iterator(the_file_name))
response['Content-Type'] = 'application/zip'
response['Content-Disposition'] = 'attachment;filename="%s.zip"' % suggestName
return response
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.