Menyajikan Fail Boleh Muat Turun dengan Django
Pengguna di tapak web selalunya memerlukan keupayaan untuk memuat turun fail, tetapi melindungi fail dan menghalang muat turun terus adalah penting. Satu penyelesaian adalah untuk mengaburkan laluan fail supaya pengguna tidak boleh mengaksesnya secara langsung.
Untuk mencapai ini, buat URL yang mengandungi parameter, seperti:
http://example.com/download/?f=somefile.txt
Andaikan fail yang boleh dimuat turun berada dalam folder /home/user/files/. Django boleh dikonfigurasikan untuk menyediakan fail untuk dimuat turun tanpa memerlukan URL dan Lihat khusus untuk memaparkan fail.
Modul X-Sendfile menawarkan penyelesaian yang optimum. Ia membolehkan Django mencari fail dan menentukan pengepalanya, manakala penyajian fail sebenar dikendalikan oleh pelayan web (cth., Apache, Lighttpd). Selepas memasang dan mengkonfigurasi mod_xsendfile, sepadukannya dengan pandangan anda:
from django.utils.encoding import smart_str 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
Perhatikan bahawa pendekatan ini memerlukan kawalan pelayan atau syarikat pengehosan yang menyokong mod_xsendfile.
Pertimbangan Tambahan:
Atas ialah kandungan terperinci Bagaimanakah Django Boleh Melayan Fail Boleh Muat Turun Dengan Selamat Menggunakan X-Sendfile (atau X-Accel-Redirect)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!