2011年10月3日 星期一

[Python] 使用 Django 架構,提供強制下載檔案的 CGI 服務

周邊有人有需求,希望 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


沒有留言:

張貼留言