On 6/28/09 10:20 PM, Annie wrote: > I'm trying to this to work: users can download their files from their > account page from a url like this: > http://example.com/account/download/a1234565789asedga-2/ > for which django processes the authentication and then passes along > the info to nginx to serve the file.
[...] > Here are the relevant bits of code: > > # part of the views.py > > def download_file(request, dlkey=None, ftype=None): > if request.user.is_authenticated(): > try: > k = Ebook.objects.select_related().filter > (ftype__exact=ftype).filter > (book__orderdetail__dlkey__exact=dlkey).filter > (book__orderdetail__medium__exact='E')[:1] > for e in k: > ebook = e.ebook > filename = os.path.join(PROTECTED_DIR, os.path.basename > (ebook)) > response = HttpResponse() > response['X-Accel-Redirect'] = ebook > response['Content-Disposition'] = > "attachment;filename=" + ebook > return response > except Exception: > raise Http404 > > > # part of the nginx configuration for the domain: > > location ^~ /account/download/ { > include /etc/nginx/ > fastcgi_params_django; > fastcgi_pass 127.0.0.1:1024; > alias /home/me/web/example.com/ > public/media/books/; > } > > location ^~ /media/books/ { > root /home/me/web/example.com/ > public; > internal; > } [...] > [1] http://wiki.nginx.org/NginxXSendfile I think the answer's in that document, actually. The value of X-Accel-Redirect should be your internal location's URL ('/media/books/') plus your filename (os.path.basename(ebook), in your view). Nginx will deliver /home/me/web/example.com/public/media/books/ebook-basename.pdf. John --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---