flask入门教程(13) -文件上传

上传文件

今天我们来看看如何在flask中处理文件上传,首先看看我们熟悉的html:

<!-- index.html -->
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
</head>

<body>
    <form method="POST" enctype="multipart/form-data"> 
        <input type="file" name="file">
        <input type="submit" value="提交">
    </form>
</body>

</html>

这里是一个表单,主要enctype。flask中用request对象处理表单:

import os

from flask import Flask, render_template, request, redirect
from werkzeug import secure_filename   # 用来确保不是恶意的文件名的

app = Flask(__name__)
app.config["UPLOAD_FOLDER"] = "upload"   # 用来储存上传文件的文件夹

@app.route("/", methods=["GET", "POST"])   # 接受两种请求方法,GET和POST
def index():
    if request.method == "GET":
        return render_template("index.html")
    else:
        if 'file' not in request.files:   # 查看是否有上传文件
            flash('没有文件上传')
            return redirect(request.url)   # 重定向到发出请求的网址
        file = request.files['file']   # 获取文件
        if file.filename == '':   # 判断文件名是否为空
            flash('没有文件上传')
            return redirect(request.url)
        else:
            filename = secure_filename(file.filename)   # 确保文件名是安全的
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))   # 保存文件
            return redirect("/show?filename=" + filename)

@app.route("/show")
def show():
    filename = request.args.get("filename")   # 获取名为filename的参数值
    return render_template("show.html", filename=filename)

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

注释皆在代码中。打开网页,假设我们选择了一个pip.txt文件:
在这里插入图片描述
然后我们点击提交,开到show页面:
在这里插入图片描述
这时显示出了文件名,好了,这次的教程就完毕了。

下次见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值