Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Menyajikan Fail Statik dengan Cekap dalam Aplikasi Kelalang?
Menyajikan Fail Statik dalam Kelalang
Melayani fail statik ialah tugas biasa dalam pembangunan web. Flask menawarkan beberapa kaedah untuk mengendalikan perkara ini, termasuk menggunakan laluan folder statik terbina dalam atau fungsi send_from_directory.
Laluan Folder Statik Terbina dalam
Flask secara automatik mencipta laluan untuk fail statik di bawah /static/
from flask import url_for @app.route('/') def home(): return url_for('static', filename='css/style.css')
Fungsi send_from_directory
Fungsi send_from_directory membolehkan anda menyampaikan fail daripada mana-mana direktori dalam apl anda. Ia memerlukan dua hujah: direktori asas dan laluan fail yang diminta. Ia memastikan bahawa laluan yang diminta terkandung dalam direktori asas, menghalang serangan traversal direktori.
from flask import send_from_directory @app.route('/reports/<path:path>') def send_report(path): return send_from_directory('reports', path)
Nota:
Jangan gunakan send_file atau send_static_file dengan pengguna- laluan yang dibekalkan, kerana ini boleh mendedahkan anda kepada kelemahan. Sebaliknya, gunakan send_from_directory, yang direka bentuk untuk mengendalikan laluan yang dibekalkan pengguna dengan selamat.
Menyajikan Fail Dalam Memori
Jika anda perlu menyediakan fail yang dijana dalam memori tanpa menulisnya ke cakera, anda boleh menggunakan BytesIO untuk mencipta objek fail dalam memori dan menghantarnya ke send_file. Anda juga perlu menentukan nama fail, jenis kandungan dan atribut lain.
from io import BytesIO import zipfile @app.route('/download.zip') def download_zip(): buffer = BytesIO() zipfile.ZipFile(buffer, 'w').write('file.txt') buffer.seek(0) return send_file(buffer, mimetype='application/zip', as_attachment=True, attachment_filename='download.zip')
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyajikan Fail Statik dengan Cekap dalam Aplikasi Kelalang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!