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

  • Evan Coury

    Evan Coury

    29 NİSAN 2007
  • SolidWorksTutoriels

    SolidWorksTu

    14 Kasım 2013
  • ThePointblank

    ThePointblan

    18 Aralık 2006