优秀的编程知识分享平台

网站首页 > 技术文章 正文

【flask】FileUpload创建HTML表单

nanyue 2024-10-15 11:33:15 技术文章 4 ℃

在Flask中,文件上传通常涉及创建一个表单,用户可以通过这个表单上传文件。然后,后端代码会处理接收到的文件。以下是实现文件上传功能的步骤:

创建HTML表单 - 使用标签创建一个表单,设置enctype="multipart/form-data"属性以支持文件上传。

File Upload


创建Flask路由 - 定义一个处理文件上传的路由。

from flask import Flask, request, redirect, url_for, send_from_directory

app = Flask(__name__)

@app.route('/upload', methods=['GET', 'POST'])

def upload_file():

if request.method == 'POST':

file = request.files['file']

if file and '.jpg' in file.filename:

# 保存上传的文件

filename = 'uploads/' + file.filename

file.save(filename)

# 重定向到文件上传后的页面

return redirect(url_for('success', filename=filename))

return '''

'''

@app.route('/success/')

def success(filename):

# 返回上传成功的页面,显示文件名和下载链接

return f'File uploaded successfully: Download {filename}'

@app.route('/download_file/')

def download_file(filename):

return send_from_directory(app.root_path + '/uploads', filename)

if __name__ == "__main__":

app.run()


处理上传的文件 - 在Flask视图函数中,通过request.files字典访问上传的文件。

保存上传的文件 - 将上传的文件保存到服务器的指定目录中。

重定向或返回上传结果 - 一旦文件被保存,可以重定向用户到一个新页面,显示上传成功的信息,或者直接在原页面显示上传结果。

提供下载链接 - 为了让用户能够下载上传的文件,可以创建一个路由来提供文件的下载服务。在示例中,使用了send_from_directory函数来实现。

确保服务器上的目标目录对于Web服务是可写的,并且处理上传的代码要考虑安全性,比如检查文件类型、大小,防止上传恶意文件。此外,对于生产环境,应该使用更高级的文件上传处理方案,比如文件存储在外部服务上,以及设置适当的权限和安全措施。

最近发表
标签列表