flask文件上传

html文件代码如下

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title></title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="uimg">
    <input type="submit" value="Login" >
</form>
</body>
</html>
复制代码

upload文件代码如下

注意:在下面的代码中我将上传后的图片进行了重命名。为了防止同名的文件会进行覆盖

  • 第一种方法使用time模块进行了重命名,并且每天的图片都新建了一个文件夹,这种方法以秒为最小时间新建文件
  • 第二种方法使用datetime模块进行了重命名,将所有的图片存放在了static/upload文件夹下面,这种方法以毫秒为时间新建文件
import os
import time, datetime
from flask import Flask, request, render_template

app = Flask(__name__)


@app.route('/upload', methods=["POST", "GET"])
def file_views():
    if request.method == 'GET':
        return render_template('upload/upload.html')
    else:
        # 得到上传的文件
        f = request.files['uimg']
        # 将文件保存到指定的目录处[相对路径](不推荐)
        # f.save('static/' +f.filename)

        # 将文件保存到指定的目录[绝对路径](推荐)
        # 获取当前根目录所在的路径
        basedir = os.path.dirname(__file__)
        '''# 第一种方法使用time模块
        today = os.path.join(basedir, 'static','upload', time.strftime('%Y%m%d'))
        if not os.path.exists(today):
            os.makedirs(today)
        now = time.strftime('%H%M%S') + os.path.splitext(f.filename)[1]
        upload_path = os.path.join(today, now)
        '''

        # 第二种方法使用datetime模块
        ftime = datetime.datetime.now().strftime('%Y%m%d%H%M%S%f')
        ext = os.path.splitext(f.filename)[1]
        upload_path = os.path.join(basedir, 'static', 'upload', ftime + ext)

        f.save(upload_path)
        return "save OK"


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

复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值