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

  • macpulenta

    macpulenta

    9 EYLÜL 2006
  • sk8ingis4me

    sk8ingis4me

    16 Mart 2006
  • SoundHound

    SoundHound

    8 Mart 2006