Flask中上传文件(六)

一、上传文件

对于已上传的文件是存储在内存或者是文件系统中一个临时的位置。你可以通过请求对象的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 "上传成功"

二、Python 打印当前文件相对路径和绝对路径

发布了21 篇原创文章 · 获赞 0 · 访问量 130

猜你喜欢

转载自blog.csdn.net/qq_41706810/article/details/105737854