How to use Python to develop the file download management function of the CMS system
Overview:
With the rapid development of the Internet, content management systems (CMS) play an important role in website development. The CMS system not only provides the content management and publishing functions of the website, but also needs to have the function of file download management. This article will introduce how to use Python to develop the file download management function of the CMS system to help developers better understand and apply it.
Database design:
Create a table named "downloads" in the MySQL database to store file-related information:
CREATE TABLE downloads ( id INT(11) PRIMARY KEY AUTO_INCREMENT, title VARCHAR(100) NOT NULL, filename VARCHAR(100) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
This table contains the file's title (title), file name (filename) and creation time (created_at).
File upload function:
Use Flask to develop web applications to implement the file upload function, save the uploaded files to the server, and store relevant information in the database. Assuming that the file upload function has been implemented, the following is a sample code:
from flask import Flask, request, render_template from flask_sqlalchemy import SQLAlchemy from werkzeug.utils import secure_filename app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:password@localhost/db_name' db = SQLAlchemy(app) class Download(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) filename = db.Column(db.String(100), nullable=False) created_at = db.Column(db.TIMESTAMP, default=db.func.current_timestamp()) @app.route('/upload', methods=['GET', 'POST']) def upload_file(): if request.method == 'POST': title = request.form['title'] file = request.files['file'] filename = secure_filename(file.filename) file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) download = Download(title=title, filename=filename) db.session.add(download) db.session.commit() return '文件上传成功!' return render_template('upload.html')
In the above code, "UPLOAD_FOLDER" is the folder path to save the uploaded file. Please set it according to the specific situation.
File download function:
The key to realizing the file download function is to provide the file from the server to the user for download. In Flask, this can be easily achieved using the send_from_directory function. The following is a sample code:
from flask import send_from_directory @app.route('/download/<int:download_id>') def download(download_id): download = Download.query.get_or_404(download_id) return send_from_directory(app.config['UPLOAD_FOLDER'], download.filename, as_attachment=True)
In the above code, "download_id" is the ID of the downloaded file obtained from the URL. Based on the ID, file-related information is retrieved from the database, and then the file is provided for download through the send_from_directory function.
Display download file list:
In order to allow users to easily view the downloadable file list, we can use a template engine to present a download file list page. The following is a sample code:
@app.route('/') def index(): downloads = Download.query.all() return render_template('index.html', downloads=downloads)
In the above code, the information of all downloaded files is obtained from the database and then passed to the template for display on the page.
upload.html: for display Upload file form;
<!DOCTYPE html> <html> <head> <title>文件上传</title> </head> <body> <h2>文件上传</h2> <form action="/upload" method="POST" enctype="multipart/form-data"> <div> <label for="title">标题:</label> <input type="text" id="title" name="title" required> </div> <div> <label for="file">选择文件:</label> <input type="file" id="file" name="file" required> </div> <div> <input type="submit" value="上传"> </div> </form> </body> </html>
index.html: used to display a list of downloaded files;
<!DOCTYPE html> <html> <head> <title>下载文件列表</title> </head> <body> <h2>下载文件列表</h2> <ul> {% for download in downloads %} <li><a href="/download/{{ download.id }}">{{ download.title }}</a></li> {% endfor %} </ul> </body> </html>
The above is a simple example that lists all files available for download File title and provide download link.
Summary:
Through the above steps, we successfully developed the file download management function of the CMS system using Python. By using the Flask framework and SQLAlchemy library, we can easily upload, download and manage files. This is just a basic example, developers can extend and optimize it according to actual needs. I hope this article can provide some reference and help for everyone in developing the file download function in the CMS system.
The above is the detailed content of How to use Python to develop the file download management function of CMS system. For more information, please follow other related articles on the PHP Chinese website!