周邊有人有需求,希望 CGI 能夠提供強制下載的功能,這我以前寫過 PHP,知道很容易透過用 header() 來送出資訊,請瀏覽器直接下載檔案,但改成 Django 我又不會了。翻了以前的筆記,順便看到以前的筆記:[Python] 使用 Django 提供檔案下載的 CGI 服務,溫習了一下。
至於此篇解法如下:
@ views.py
from django import http
from django.http import HttpResponse
from django.core.servers.basehttp import FileWrapper
import os
import mimetypes
def DemoFileDownload(request):
file_path = '/data/cat.jpg'
file_name = 'name_for_download.jpg'
response = HttpResponse(FileWrapper( file(file_path) ),mimetype='application/force-download')
response['Content-Disposition'] = 'attachment; filename=%s' % file_name
response['Content-Type'] = mimetypes.guess_type(file_path)
response['Content-Length'] = os.path.getsize(file_path)
return response
沒有留言:
張貼留言