django 下载文件
方法一、
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。from django.http import StreamingHttpResponse
def big_file_download(request):
# do something...
def file_iterator(file_name, chunk_size=512):
with open(file_name) as f:
while True:
c = f.read(chunk_size)
if c:
yield c
else:
break
the_file_name = "file_name.txt"
response = StreamingHttpResponse(file_iterator(the_file_name))
return response
方法二、
csv格式
#urls.py
url(r'download/(?P<FILE>.*)$', views.DownLoadView.as_view(), name='download'),
#views.py
class DownLoadView(View):
def get(self, request, FILE):
file_path = STATICFILES_DIRS[0] +"/"+FILE
response = HttpResponse(content_type="text/csv")
response['Content-Disposition'] = 'attachment; filename=%s' %FILE
response['Content-Length'] = os.path.getsize(file_path)
data = csv.reader(file(file_path, 'rb'))
writer = csv.writer(response)
for item in data:
writer.writerow(item)
return response
方法三、
#urls.py
url(r'loadkml/(.*)$', 'django.views.static.serve', {'document_root':settings.DOWNLOAD_DIR}, name='loadkml'),
#settings.py
DOWNLOAD_DIR = os.path.join(BASE_DIR, "data").replace('\\', '/')
更多精彩

