Bagaimana untuk Melayan Fail Boleh Muat Turun dengan Selamat di Django Tanpa Mendedahkan Laluan Fail Terus?

Mary-Kate Olsen
Lepaskan: 2024-11-21 06:31:08
asal
329 orang telah melayarinya

How to Securely Serve Downloadable Files in Django Without Exposing Direct File Paths?

Menyajikan Fail Boleh Muat Turun dalam Django

Soalan:

Bagaimanakah Django boleh menyediakan fail yang boleh dimuat turun dengan selamat sambil menyembunyikan muat turun terusnya laluan?

Jawapan:

Django tidak secara langsung menyokong penyajian fail yang boleh dimuat turun. Untuk melaksanakan fungsi ini, pertimbangkan pendekatan berikut:

Menggunakan Modul xsendfile

Kebaikan:

  • Menggabungkan laluan fail yang dijana pelayan dengan fail yang disiarkan oleh Apache/Lighttpd.
  • Meningkatkan keselamatan dengan mengaburkan laluan fail.

Pelaksanaan:

from django.utils.encoding import smart_str
from django.http import HttpResponse

def download_view(request):
    file_path = '/home/user/files/somefile.txt'
    file_name = 'somefile.txt'

    response = HttpResponse(content_type='application/force-download')
    response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(file_name)
    response['X-Sendfile'] = smart_str(file_path)

    return response
Salin selepas log masuk

Nota: Pendekatan ini memerlukan mod_xsendfile didayakan pada anda pelayan.

Kesimpulan:

Dengan menggunakan modul xsendfile, anda boleh menyampaikan fail yang boleh dimuat turun dengan selamat dalam Django sambil menghalang akses terus ke lokasi asalnya. Pendekatan ini menawarkan keselamatan dan fleksibiliti dalam mengendalikan muat turun fail.

Atas ialah kandungan terperinci Bagaimana untuk Melayan Fail Boleh Muat Turun dengan Selamat di Django Tanpa Mendedahkan Laluan Fail Terus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan