微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python学习笔记——flask之上传下载文件

request.files['pic']中的pic是属性不是文件

文件上传

一、普通方式

1.request中获取文件对象

2.读取数据,再写入到服务器文件中。

# coding:utf-8
from flask import Flask,request

app = Flask(__name__)

@app.route('/upload',methods=['POST'])  #上传文件
def upload():
    file_open = request.files['pic']#从请求里 获取打开的文件
    if file_open == None:
        return '上传错误'
    #读取数据
    date = file_open.read()
    #写入数据
    save_file = open('1.png','wb')#新建一个文件,准备保存数据
    save_file.write(date)
    #关闭文件
    file_open.close()
    return '已上传成功'
# 运行程序
if __name__ == '__main__':
    print(app.url_map)#查看所有的路由信息
    app.run(host='0.0.0.0',port=80,debug=True)  # 通过run()函数将web应用部署到web服务器并启动服务

二、简洁方式

使用 save('xxx.png')方法保存数据

# coding:utf-8
from flask import Flask,request

app = Flask(__name__)

@app.route('/upload',methods=['POST'])  #上传文件
def upload():
    file_open = request.files['pic']#从请求里 获取打开的文件
    if file_open == None:
        return '上传错误'

    file_open.save('2.png')
    return '已上传成功'
# 运行程序
if __name__ == '__main__':
    print(app.url_map)#查看所有的路由信息
    app.run(host='0.0.0.0',port=80,debug=True)  # 通过run()函数将web应用部署到web服务器并启动服务

 文件下载

一、简洁方式

1.导入send_from_directory

2.返回  send_from_directory(r'E:\pythonTest\flask',filename='1.png', as_attachment=True)

注意方法里第一个参数的格式

文件路径为:E:\pythonTest\flask\1.png

# coding:utf-8
from flask import Flask,request,send_from_directory

app = Flask(__name__)

@app.route('/download')  #上传文件
def download():
    return send_from_directory(r'E:\pythonTest\flask',filename='1.png', as_attachment=True)
# 运行程序
if __name__ == '__main__':
    print(app.url_map)#查看所有的路由信息
    app.run(host='0.0.0.0',port=80,debug=True)  # 通过run()函数将web应用部署到web服务器并启动服务

二、模拟http响应

导入make_response

 

# coding:utf-8
from flask import Flask,make_response

app = Flask(__name__)

@app.route('/download')  #上传文件
def download():
    # 1. 二进制打开文件
    file = open('1.png','rb')
    
    # 2. 使用make_response 来构造响应信息
    resp = make_response(file.read())  # 响应体数据
    resp.status = "200"  # 状态码
    resp.headers["Content-Type"] = "image/png"  # 通过字典的形式添加响应头
    return resp
# 运行程序
if __name__ == '__main__':
    print(app.url_map)#查看所有的路由信息
    app.run(host='0.0.0.0',port=80,debug=True)  # 通过run()函数将web应用部署到web服务器并启动服务

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐