Tải xuống tệp bằng Flask

Bài viết đăng tại: https://programming.laptrinh.site

Với phần giải thích này, chúng ta sẽ tìm hiểu cách tạo liên kết có thể tải xuống để tải xuống tệp dưới dạng tệp đính kèm bằng hàm send_file trong Flask.

Tải xuống tệp dưới dạng tệp đính kèm với sự trợ giúp của hàm send_file trong Flask

Trong Flask Framework, chúng ta có thể tạo một trình tải xuống tệp để tải xuống tất cả các loại tệp như PDF, JPEG, MP3 hoặc các tệp khác, nhưng logic không đổi. Bây giờ chúng ta chỉ cần vào trình soạn thảo văn bản của mình và tạo một tệp app.py đơn giản bên trong cùng thư mục chứa tệp PNG của chúng ta.

Bây giờ chúng ta cũng cần tạo một thư mục mẫu và bên trong thư mục này, chúng ta sẽ tạo một index.html , thế là xong. Bây giờ, trước hết, chúng ta cần nhập thư viện Flask.

Bạn chỉ cần một số thư viện cần thiết và thư viện send_file :

from flask import Flask,render_template,send_file

Chúng ta cần tạo một biến app và khởi tạo ứng dụng Flask bằng thuộc tính __name__ . Bây giờ chúng tôi sẽ khởi tạo chức năng chính của mình và chúng tôi chỉ cần gọi chức năng run bên trong khối này và chuyển nó debug bằng True , vì vậy nó sẽ khởi động lại ứng dụng bất cứ khi nào chúng tôi thực hiện thay đổi.

 app = Flask(__name__)
if __name__ == '__main__' : app . run(debug = True )

Chúng ta phải tạo một tuyến đường và một chức năng để tải tệp HTML. Đối với điều này, chúng tôi sẽ tạo một tuyến đường về nhà / và khi chúng tôi nhấn tuyến đường này, nó sẽ gọi một hàm có thể là Main_Page() .

Hàm này trả về render_template() ; bên trong này, chúng tôi sẽ chuyển index.html , tệp này sẽ tải mẫu được lưu trữ bên trong index.html .

@app . route( '/' ) def Main_Page (): return render_template( 'index.html' )

Bây giờ chúng tôi sẽ viết một mẫu cơ bản sẽ chứa tệp đã tải xuống.

Chúng tôi sẽ chỉ sử dụng một vài thẻ, thẻ đầu tiên sẽ là <h2> giữ tiêu đề và thẻ thứ hai là <p> là thẻ đoạn văn. Bên trong thẻ này, chúng tôi sẽ sử dụng thẻ neo và thuộc tính href sẽ bằng với một thuộc tính là url_for và chuyển tên của nó.

 < h2 >Downloqad this file</ h2 > < p > < a href = "{{url_for('Download_File')}}" >Download</ a ></ p >

Nếu chúng tôi chạy ứng dụng này và mở localhost 5000 , nó sẽ cho chúng tôi biết rằng nó không thể tạo URL cho điểm cuối Download_File .

Đầu ra tệp tải xuống Flask 1

Cú pháp này url_for('Download_File') đang tìm kiếm tệp tải xuống, vì vậy chúng tôi chỉ cần thực hiện yêu cầu nhận để thực hiện việc này.

Bây giờ chúng ta sẽ tạo một route khác, /download . Và chúng ta sẽ tạo một hàm có cùng tên mà chúng ta đã chỉ định bên trong thuộc tính url_for() .

Bây giờ chúng ta sẽ cần chỉ định đường dẫn của tệp, vì vậy chúng ta sẽ tạo một biến có thể là PATH và lưu trữ đường dẫn bên trong biến này.

Chúng tôi sẽ trả lại tệp bằng hàm send_file() , hàm này nhận hai tham số. Cái đầu tiên sẽ là một đường dẫn và cái thứ hai sẽ là as_attachment bằng True vì chúng tôi muốn tạo một tệp có thể tải xuống dưới dạng tệp đính kèm.

@app . route( '/download' ) def Download_File (): PATH = 'Flask-logo.png' send_file(PATH,as_attachment = True )

Nếu chúng tôi lưu và làm mới trang, chúng tôi sẽ thấy rằng nó được chuyển đổi thành siêu liên kết và chúng tôi có thể tải xuống tệp bằng cách nhấp vào liên kết này.

Đầu ra tệp tải xuống Flask 2

Mã Python hoàn chỉnh:

from flask import Flask,render_template,send_file

app = Flask(__name__)

@app.route('/')
def Main_Page():
    return render_template('index.html')

@app.route('/download')
def Download_File():
    PATH='Flask-logo.png'
    return send_file(PATH,as_attachment=True)

if __name__=='__main__':
    app.run(debug=True)

URL Link

https://laptrinh.site/tai-xuong-tep-bang-flask/

Viết bởi Duy Mạnh. Đã đăng ký bản quyền tác giả tại Creativecommons và DMCA