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

  • eHow

    eHow

    27 NİSAN 2006
  • KSI

    KSI

    25 Temmuz 2009
  • Pál Zoltán Illés

    Pál Zoltán

    30 NİSAN 2007