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 打印当前文件相对路径和绝对路径
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在miniui实现多文件上传功能,你需要使用miniui的上传控件组件,并对其进行一些配置和代码操作。下面是实现多文件上传的步骤: 1. 在页面引入miniui的上传控件组件,如下所示: ``` <script src="/miniui/miniui.js"></script> <link href="/miniui/themes/bootstrap/miniui.css" rel="stylesheet" /> ``` 2. 在页面添加上传控件组件,如下所示: ``` <mini-uploader id="uploader" name="file" flashUrl="/miniui/uploader/uploader.swf" uploadUrl="/upload.php" limitType="*.jpg,*.gif,*.png" limitSize="1024" multiSelect="true"></mini-uploader> ``` 其,id为上传控件的ID,name为上传文件的参数名,flashUrl为Flash上传组件的URL,uploadUrl为文件上传的URL,limitType为文件类型的限制,limitSize为文件大小的限制,multiSelect为是否允许多文件上传。 3. 在页面添加上传按钮,如下所示: ``` <input type="button" value="上传文件" onclick="uploadFile()" /> ``` 其,onclick事件调用uploadFile()函数,用于触发上传事件。 4. 在页面添加上传文件的处理函数,如下所示: ``` function uploadFile() { var uploader = mini.get("uploader"); uploader.upload(); } ``` 其,使用mini.get获取上传控件组件,然后调用upload()方法实现文件上传功能。 5. 在服务器端编写处理文件上传的代码,如下所示: ``` <?php $uploadDir = 'uploads/'; $fileName = $_FILES['file']['name']; $filePath = $uploadDir . $fileName; move_uploaded_file($_FILES['file']['tmp_name'], $filePath); ?> ``` 其,$uploadDir为文件上传的目录,$fileName为上传文件的名称,$filePath为上传文件的完整路径,move_uploaded_file()函数用于将上传的文件移动到指定的目录下。 通过以上步骤,就可以实现miniui的多文件上传功能了。注意,以上代码仅供参考,具体实现还需要根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值