flask 文件的上传下载和excel操作

Posted Python & more

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask 文件的上传下载和excel操作相关的知识,希望对你有一定的参考价值。


文件的下载

from flask import send_from_directory

@excel_bp.route('/get_attachment/<path:filename>')
def get_attachment(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'],filename,as_attachment=True)


文件的上传

(1)html中

<input class="form-control" type="文件名" name="file" value="请上传excel文件">

(2)后端获取,保存

file = request.files.get('文件名') # 获取文件

filename = file.filename  # 获取文件名

file.save(os.path.join(FILE_DIR,filename)) # 保存文件

(3)当然 要对文件名,文件类型进行判断;存储路径也要进行判断

可以使用werkzeug中的 secure_filename

判断文件类型

ALLOWED_EXTENSIONS = ['xls', 'xlsx']

def allowe_file(filename):
    '''
    限制上传的文件格式
    :param filename:
    :return:
    '''
    return '.' in filename and filename.rsplit('.',1)[1] in ALLOWED_EXTENSIONS

修改文件名

import os
import datetime,uuid

def change_filename(filename):
    '''
    修改文件名称
    :param filename:
    :return:
    '''
    fileinfo = os.path.splitext(filename)
    filename = datetime.datetime.now().strftime("%Y%m%d%H%M%S")+str(uuid.uuid4().hex)+fileinfo[-1]
    return filename

判断储存路径

if not os.path.exists(FILE_DIR):
    os.makedirs(FILE_DIR)


python的excel操作


通过xlrd读文件

安装:pip install xlrd

通过 xlrd 打开excel,组装数据

import xlrd

def get_data(filename,method='r'):
    '''
    改变数据结构 -- 方便前端显示
    :param filename:  文件名
    :param method:  按照 列或者 行 返回数据
    '''
    data = xlrd.open_workbook(filename)
    table= data.sheets()[0]
    nrows = table.nrows  # 行数
    ncols = table.ncols  # 列数
    if method == 'r':
        row_list = [ table.row_values(i) for i in range(0,nrows)]   # 所有行的数据
        return row_list
    elif method == 'c':
        col_list = [ table.col_values(i) for i in range(0,ncols)]    # 所有列的数据
        return col_list

前端显示

 < thead >
          < tr >
 ? ? ? ? ? ? ?{% for title in datalist[0] %}
 ? ? ? ? ? ? ? ? < th >{ title }< / th >
 ? ? ? ? ? ? ?{ % endfor % }
 ? ? ? ? ?< /tr >
    < / thead >
      < tbody >
 ? ? ? ? ?{ % for row in datalist[1:] % }
 ? ? ? ? ? ? ?< tr >
                   { % for item in row % }
                      <td>{ { item } }</td>
                  { % endfor % }
              < /tr >
 ? ? ? ? { % enfor % }
 ? ? ?< / tbody >
  < / table >

通过xlwt写文件

技术分享图片





以上是关于flask 文件的上传下载和excel操作的主要内容,如果未能解决你的问题,请参考以下文章

Flask+Vue实现excel文件从服务器端导出至本地

基于Flask开发网站 -- 前端Ajax异步上传文件到后台(文末送书)

python flask 上传多个文件,代码怎么写?

在Flask/Django中增加下载Excel的功能

flask 生成excel并下载

Flask 编写http接口api及接口自动化测试