当前位置 : 主页 > 编程语言 > python >

Flask模板上传文件和with方法

来源:互联网 收集:自由互联 发布时间:2022-06-20
使用 request.files.get('pic') 来接收上传过来的文件,返回当前上传文件的文件对象 # -*- coding: utf-8 -*- from flask import Flask , request app = Flask ( __name__ ) @ app . route ( "/upload" , methods = [ "POST" ]) de

使用

request.files.get('pic')

来接收上传过来的文件,返回当前上传文件的文件对象

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

app = Flask(__name__)

@app.route("/upload",methods=["POST"])
def upload():
"""接收前端传送过来的文件"""
file_obj = request.files.get("pic")
# 判断是否上传
if file_obj is None:
return "没有上传操作"

# 将文件保存到本地
# 1、创建文件
f = open("./demo.jpg","wb")
# 2、读取上传的文件二进制内容
data = file_obj.read()
# 3、写入文件二进制内容到新文件中
f.write(data)

f.close()
return "文件上传成功"

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

流程:

前端提交过来的文件名,接收后返回文件对象,判断文件对象是否为空,将文件保存到本地,关闭资源句柄

Flask模板上传文件和with方法_上传



# 将文件保存到本地
# 1、创建文件
f = open("./demo.jpg","wb")
# 2、读取上传的文件二进制内容
data = file_obj.read()
# 3、写入文件二进制内容到新文件中
f.write(data)

在flask中用

file_obj.save("./demo.jpg")

即可代替完成上面三句代码

Flask模板上传文件和with方法_上传_02

with方法

一般语法

with open("./1.txt", "wb") as f:
文件操作代码

在类中有两个魔术方法是专门用来操作with的

理解为将with拆分成了两份

__enter__() 在进入with时调用
__exit__() 在结束with时调用

一份是主代码区,写在了类中__enter__魔术方法中

一份是结束代码、接收报错区,写在类中__exit__魔术方法中

class Foo(object):
def __enter__(self):
"""在进入with时立马调用此代码此方法代码"""
print("enter call back")
def __exit__(self,exc_type,exc_val,exc_tb):
"""在结束with时调用"""
print("end call back")
print("exc_type : %s" % exc_type)
print("exc_val : %s " % exc_val)
print("exc_tb : %s " % exc_tb)

with Foo() as f:
# 进入with立马先调用__enter__中方法
print("hello python")

Flask模板上传文件和with方法_flask_03

如果with中语句报错会在__exit__中获取到错误详细信息,并输出。

上一篇:那些我们从牛客上学到的python干货
下一篇:没有了
网友评论