使用 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__)
.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)
流程:
前端提交过来的文件名,接收后返回文件对象,判断文件对象是否为空,将文件保存到本地,关闭资源句柄
# 1、创建文件
f = open("./demo.jpg","wb")
# 2、读取上传的文件二进制内容
data = file_obj.read()
# 3、写入文件二进制内容到新文件中
f.write(data)
在flask中用
file_obj.save("./demo.jpg")
即可代替完成上面三句代码
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")
如果with中语句报错会在__exit__中获取到错误详细信息,并输出。