zoukankan      html  css  js  c++  java
  • flask保存 文件到本地

    本篇队长介绍一下如何 把前端上传的文件保存 到 后端flask项目目录

    首先讲一下上传、保存文件的思路:

      第一步:前端通过post请求方式提交上传的文件

        <input id="file" type="file" name="fileName" style="display: inline-block"/>
        <input type="submit" value="上传文件" />

      第二步: 后端flask通过 request.files['fileName'] 获取文件对象

        f = request.files['fileName']

      第三步:指定要保存的文件夹的绝对路径 (此案例把上传文件放到task_files文件夹内)

        UPLOAD_FOLDER = 'app/controls/task_mgm/task_files'
        file_dir = os.path.join(os.getcwd(), UPLOAD_FOLDER)
     第四步:分别 保存文件路径到本地 和数据库以便查询    
        file_path = os.path.join(file_dir, f.filename)
        f.save(file_path)
        task.fileName = f.filename
    代码Demo
     1 @duty_mgm.route('/upload', methods=['POST'])
     2 @login_required
     3 def upload():
     4      #  保存上传的文档
     5         UPLOAD_FOLDER = 'app/controls/task_mgm/task_files'
     6         file_dir = os.path.join(os.getcwd(), UPLOAD_FOLDER)
     7         if not os.path.exists(file_dir):
     8             os.makedirs(file_dir)
     9         f =request.file.get('fileName')  # 获取上传的文档对象
    10         if f:
    11             file_path = os.path.join(file_dir, f.filename)  # filename是f的固有属性
    12             f.save(file_path)                 # 保存到指定目录
    13             task.fileName = f.filename   # 保存到数据库
    14         try:
    15             db.session.add(task)
    16             db.session.commit()
    17         except Exception as e:
    18             flash('添加失败')
    19         flash('添加成功')        
    20     return render_template('/task_mgm/taskinfo_add.html', form=form, header=header)    # 返回到文件上传页面
    View Code


    ALLOWED_EXTENSIONS = set(['txt', 'png', 'jpg', 'xls', 'JPG', 'PNG', 'xlsx', 'gif', 'GIF', 'ppt', 'pptx', 'doc', 'docx', 'csv', 'sql', 'py'])
    # 用于判断文件后缀,可调用
    def allowed_file(filename):
    return '.' in filename and filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS
     
     
  • 相关阅读:
    由于挂载的nfs存储目录掉下线,导致创建VM时,无法创建
    使用RVM更新Ruby 版本
    安装logstash+kibana+elasticsearch+redis搭建集中式日志分析平台
    Topic modeling【经典模型】
    [第1集] 课程目标,数据类型,运算,变量
    Juint test Case 的2种使用方式
    getJSON方式请求服务器
    Web项目改名的带来的404not found问题
    JavaWeb EL表达式, JSTL标签及过滤器综合学习
    HashMap的几种遍历方式(转载)
  • 原文地址:https://www.cnblogs.com/We612/p/10155207.html
Copyright © 2011-2022 走看看