Para algumas situações é melhor que o visitante faça download do arquivo, mesmo que o browser possua os plugins necessários para exibí-lo. Para forçar o download basta utilizar a view abaixo:
def download_view(request): from django.http import HttpResponse, Http404 from os import path import mimetypes arquivo = "%s/%s" % (settings.MEDIA_ROOT, request.GET.get('filename'), ) if not (path.exists(arquivo)): raise Http404() mimetype, encoding = mimetypes.guess_type(arquivo) if mimetype is None: mimetype = 'application/force-download' file = arquivo.split("/")[-1] response = HttpResponse(open(arquivo, 'r').read()) response['Content-Type'] = mimetype response['Pragma'] = 'public' response['Expires'] = '0' response['Cache-Control'] = 'must-revalidate, post-check=0, pre-check=0' response['Content-Disposition'] = 'attachment; filename=%s' % file response['Content-Transfer-Encoding'] = 'binary' response['Content-Length'] = str(path.getsize(arquivo)) return response
O parâmetro filename vem por get, permitindo que a mesma view seja utilizada para vários downloads de diferentes classes. O que pode ser ajustado é o caminho da definição da variável filename de acordo com a necessidade.
hasta!
Nenhum comentário:
Postar um comentário