Menyajikan Fail Boleh Muat Turun dalam Django: Pendekatan Komprehensif
Menyajikan fail boleh dimuat turun dengan selamat adalah keperluan biasa dalam pembangunan web. Django, rangka kerja web popular dalam Python, menyediakan beberapa kaedah untuk memudahkan tugas ini. Satu kaedah sedemikian melibatkan mengaburkan laluan fail untuk menghalang muat turun terus.
Dalam senario ini, format URL yang dikehendaki ialah http://example.com/download/?f=somefile.txt, di mana somefile.txt berada dalam folder rumah/pengguna/fail/ pada pelayan. Timbul persoalan: bagaimana Django boleh menghantar fail untuk dimuat turun tanpa menggunakan URL dan Paparan standard?
Penyelesaian X-Sendfile
Satu penyelesaian yang berkesan adalah dengan menggunakan Modul X-Sendfile. Modul ini memanfaatkan pelayan Apache atau Lighttpd untuk mengendalikan penyajian fail. Django menjana laluan fail atau fail itu sendiri, manakala pelayan menguruskan penghantaran fail sebenar.
Pelaksanaan dengan X-Sendfile
Untuk menyepadukan X-Sendfile dengan Django, ikut langkah berikut:
from django.utils.encoding import smart_str from django.http import HttpResponse response = HttpResponse(mimetype='application/force-download') # mimetype is replaced by content_type for django 1.7 response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(file_name) response['X-Sendfile'] = smart_str(path_to_file) # Set 'Content-Length' header if necessary return response
Kod ini memanfaatkan X-Sendfile untuk mewakilkan penyajian fail kepada pelayan, memastikan laluan fail kekal dikaburkan sambil membenarkan pengguna yang dibenarkan memuat turun fail.
Atas ialah kandungan terperinci Bagaimana untuk Melayan Fail Boleh Muat Turun di Django Tanpa Menggunakan URL dan Paparan Standard?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!