一、上传文件
对于已上传的文件是存储在内存或者是文件系统中一个临时的位置
。你可以通过请求对象的files属性访问他们。每个上传的文件都会存储在这个字典里。它表现近乎为一个标准的python file对象,,但是它还有一个save()方法,这个方法允许你把文件保存到服务器的文件系统中。这里有一个用save()方法保存文件的例子。
from flask import Flask, request
app = Flask(__name__, template_folder='templates', static_url_path='/static')
@app.route('/upload', methods=['GET', 'POST'])
def upload():
#接受前端传送过来的文件
file_object = request.files.get("pic")#f为文件对象
if file_object is None:
#表示没有发送文件
return "未上传文件"
#将文件保存到本地
# #1、创建一个文件
# f = open('./demo.jpg', 'wb')
# try:
# #2、向文件中写内容
# data = file_object.read()
# f.write(data)
# except Exception as e:
# pass
# finally:
# #3、关闭文件
# f.close()
#以下的方式直接将图片文件进行保存
file_object.save('/home/pyvip/bookshop_flask/static/demo1.png')
return "上传成功"
if __name__ == '__main__':
print(__file__)
app.run(host='0.0.0.0', debug=True)
如果你想知道上传前文件在客户端的文件是什么名字,你可以访问filename属性,但是永远不要相信这个值,这个值可以伪造的。如果你要把文件按客户端提供的文件传到服务器上,那么请把它传递给Werkzeug提供的secure_filename()函数。
注意:with方式,即上下文管理器
@app.route('/upload', methods=['GET', 'POST'])
def upload():
#接受前端传送过来的文件
file_object = request.files.get("pic")#f为文件对象
if file_object is None:
#表示没有发送文件
return "未上传文件"
#将文件保存到本地,with是自动关闭文件对象的模式
with open('/home/pyvip/bookshop_flask/static/demo1.png', 'wb') as f :
f.write(file_object.read())
return "上传成功"