SORU
20 Temmuz 2009, PAZARTESİ


Sahip Django indirilebilir dosyalar hizmet

Sitede kullanıcıların doğrudan indirilen olamaz bu kadar gizlenmiş olan dosyaları indirmek mümkün olmak istiyorum.

Örneğin, URL, böyle bir şey, "http://example.com/download/?f=somefile.txt . olmak istiyorum

Ve sunucu üzerinde tüm indirilebilir dosyaları bir klasör içinde bulunan biliyorum "/home/kullanıcı/dosyalar/".

Bir şekilde Django ve görüntülemek için bir URL Görüntülemek bulmaya karşıt olarak indirmek için bu dosyayı hizmet yapmak için var mı?

CEVAP
21 Temmuz 2009, Salı


"Her iki dünyanın en iyi" olabilir birleştirmek S. lott'un çözüm xsendfile module: django oluşturur dosya yolu (ya da dosyanın kendisi), ama bu gerçek bir dosya veriyor idare tarafından Apache/Lighttpd. Mod_xsendfile, görünümü ile entegre kod birkaç satır alır kurduktan sonra:

from django.utils.encoding import smart_str

response = HttpResponse(mimetype='application/force-download')
response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(file_name)
response['X-Sendfile'] = smart_str(path_to_file)
# It's usually a good idea to set the 'Content-Length' header too.
# You can also set any other required headers: Cache-Control, etc.
return response

Tabii ki, bu sadece eğer sunucu üzerinde kontrol varsa çalışır, yoksa hosting şirketi mod_xsendfile zaten kurmuştur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BaaaStuds's channel

    BaaaStuds's

    10 Mart 2009
  • Keith Anthe

    Keith Anthe

    26 NİSAN 2011
  • TimMinchinLive

    TimMinchinLi

    23 ŞUBAT 2009