Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Melayan Fail Boleh Muat Turun dengan Laluan Tersembunyi di Django?
Muat Turun Fail Dinamik dengan Django
Dalam aplikasi web, selalunya perlu membenarkan pengguna memuat turun fail. Walau bagaimanapun, anda mungkin mahu mengaburkan laluan fail untuk menghalang akses terus. Dengan Django, anda boleh menyampaikan fail yang boleh dimuat turun dengan laluan tersembunyi.
Soalannya:
Seorang pengguna ingin mencipta URL seperti http://example.com/download /?f=somefile.txt yang, apabila diakses, menyajikan fail yang terletak di /home/user/files/somefile.txt tanpa memaparkannya dalam pelayar.
Jawapannya:
Untuk mencapai ini, anda boleh menggunakan gabungan kelas HttpResponse dan modul xsendfile. HttpResponse menjana laluan ke fail atau fail itu sendiri, manakala xsendfile mengendalikan penyajian fail sebenar.
Berikut ialah coretan kod contoh yang menunjukkan penyepaduan:
from django.utils.encoding import smart_str from django.http import HttpResponse response = HttpResponse(content_type='application/force-download') response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(file_name) response['X-Sendfile'] = smart_str(path_to_file) return response
Penyelesaian ini memerlukan anda untuk mempunyai kawalan ke atas pelayan anda atau pastikan mod_xsendfile (untuk Apache) atau X-Accel-Redirect (untuk nginx) ditetapkan up.
Kemas kini untuk Django 1.7:
Atribut mimetype dalam kod hendaklah digantikan dengan content_type.
Atas ialah kandungan terperinci Bagaimana untuk Melayan Fail Boleh Muat Turun dengan Laluan Tersembunyi di Django?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!