【发布时间】:2013-12-29 16:54:18
【问题描述】:
我正在我的Django 1.5 中处理一个允许我下载文件的视图。下载过程由HTML页面中的一个按钮触发,如下所示:
<a href="/file/download/{{ file.name }}/"><input type="button" value="Download!" /></a>
网址指向管理下载的视图:
def filedownload(request, filename):
down_file = File.objects.get(name = filename)
file_path = MEDIA_ROOT+str(down_file.file)
file_name = down_file.filecomplete()
if not Transaction.objects.filter(user = request.user, file = down_file):
transaction = Transaction.objects.create(date = datetime.now(), user = request.user, file = down_file, vote = False)
transaction.save()
fp = open(file_path, 'rb')
response = HttpResponse(fp.read())
fp.close()
type, encoding = mimetypes.guess_type(file_name)
if type is None:
type = 'application/octet-stream'
response['Content-Type'] = type
response['Content-Length'] = str(os.stat(file_path).st_size)
if encoding is not None:
response['Content-Encoding'] = encoding
if u'WebKit' in request.META['HTTP_USER_AGENT']:
filename_header = 'filename=%s' % file_name.encode('utf-8')
elif u'MSIE' in request.META['HTTP_USER_AGENT']:
filename_header = ''
else:
filename_header = 'filename*=UTF-8\'\'%s' % urllib.quote(file_name.encode('utf-8'))
response['Content-Disposition'] = 'attachment; ' + filename_header
return response
我想做的是在用户点击 downlad 按钮后立即将用户重定向到成功页面,但我找不到方法。
我不担心下载中断或其他不成功的下载,因为这是一个学校项目。
【问题讨论】:
标签: django