首页 > 其他分享 >flask 文件上传与接收

flask 文件上传与接收

时间:2023-11-20 18:34:39浏览次数:32  
标签:__ files name 文件 flask filename file 接收 上传

在做flask后端,有个需求是将视频从前端上传至后端,然后再页面播放上传的视频,记录下知识点。

 

文件流接收

1、前端传来的对象是二进制文件流,有两种方法保存本地。

(1)通过open()方法将文件流写入保存

(2)直接用调用 file.save() 方法保存传来的文件流:

from flask import Flask,request
app = Flask(__name__)


@app.route('/upload',methods = ['POST'])
def file_receive():
    # 获取文件对象
    file = request.files['file']
    # 获取文件名
    filename = file.filename
    # file.save 也可保存传来的文件
    # file.save(f'./{filename}')
    with open(f'./{filename}','wb') as f:
        f.write(file.stream.read())

    return {'success':1}

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

测试该段代码的文件上传可以用requests实现,用open()创建一个二进制对象,传给后端:

import requests

def uploads():
    url = 'http://127.0.0.1:5000/upload'
    files = {'file':open('C:\\Users\\xxx\\Desktop\\push\\test.mp4','rb')}
    r = requests.post(url,files = files)
    print(r.text)

if __name__=="__main__":
    uploads()

 

2、如果既要传参数又要传文件呢,用 request.data 可以获取前端传来的参数:

from flask import Flask,request
app = Flask(__name__)

@app.route('/upload',methods = ['POST'])
def file_receive():
    # 获取文件对象
    file = request.files['file']
    # 获取参数body
    body = request.data
    filename = file.filename
    # file.save 也可保存传来的文件
    # file.save(f'./{filename}')
    with open(f'./{filename}','wb') as f:
        f.write(file.stream.read())

    return {'success':1}

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

 requests 测试代码:

import requests

def uploads():
    url = 'http://127.0.0.1:5000/upload'
    body = {'info':'test'}
    files = {'file':open('C:\\Users\\xxx\\Desktop\\push\\test.mp4','rb')}
    r = requests.post(url,json = body,files = files)
    print(r.text)

if __name__=="__main__":
    uploads()

 

标签:__,files,name,文件,flask,filename,file,接收,上传
From: https://www.cnblogs.com/shenh/p/17844316.html

相关文章

  • 文件上传
    文件上传文件上传漏洞是指攻击者上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务端命令的能力。场景中上传附件、头像等功能,若在系统设计中忽略了相关的安全检查,则容易导致文件上传漏洞。网站文件常见的后缀名:asp、asa、cdx、cer、php、aspx、ashx、php3、php.a、sh......
  • 请求扩展,蓝图 , flask-session,数据库连接池,wtforms ,flask-script,信号,flask-cache
    1请求扩展......
  • 文件的上传下载测试点
    上传超大超多文件的业务:业务举例:对于rvt文件支持上传200个 (1)上传了200个rvt文件后系统提交成功时间、是否保存成功、页面加载、附件下载的等性能。 (2)上传文件夹后单个删除再上传等边界场景。 (3)上传的进度条展示 (4)上传的过程中取消(刚上传的时候取消,上传到9......
  • 关于视频点播平台EasyDarwin视频直播平台如何上传点播视频的具体操作步骤
    EasyDarwin互联网视频云服务通过其高效的视频管理功能和广泛适用性,为用户提供稳定、流畅的视频服务,广泛应用于各种互联网场景。应用场景包括电视直播、现场直播、时移电视、即刻回看和视频点播功能,适用于OTTTV、IPTV、互联网教育、视频聊天、现场直播和VOD等各种场景应用。E......
  • 关于视频点播平台EasyDarwin视频直播平台如何上传点播视频的具体操作方式
    EasyDarwin互联网视频云服务通过其高效的视频管理功能和广泛适用性,为用户提供稳定、流畅的视频服务,广泛应用于各种互联网场景。应用场景包括电视直播、现场直播、时移电视、即刻回看和视频点播功能,适用于OTTTV、IPTV、互联网教育、视频聊天、现场直播和VOD等各种场景应用。EasyD......
  • SpringBoot 策略模式 切换上传文件模式
    策略模式策略模式是指有一定行动内容的相对稳定的策略名称。我们定义一个接口(就比如接下来要实现的文件上传接口)我们定义所需要实现的策略实现类A、B、C、D(也就是项目中所使用的四种策略阿里云Oss上传、腾讯云Cos上传、七牛云Kodo上传、本地上传)我们通过策略上下文来调用策......
  • vue2+element+vue-quill-editor实现富文本框组件(使用链接引入视频+上传本地视频+上传
    参考文档:https://www.duidaima.com/Group/Topic/Vue/12272前提不赘述,npm引入插件并全局导入 components文件夹下创建ArticleEditor.vue:<template><divclass=""><!--富文本框--><quill-editorref="myQuillEditor"v-bind:va......
  • springboot 控制序列化反序列化示例(接口返回数据处理/接口接收数据处理)
    1.返回Long转JSONpackagecom.mingx.drone.config;importcom.fasterxml.jackson.core.JsonGenerator;importcom.fasterxml.jackson.databind.JsonSerializer;importcom.fasterxml.jackson.databind.SerializerProvider;importjava.io.IOException;/***@Descript......
  • 【漏洞复现】金蝶OA-EAS系统 uploadLogo.action 任意文件上传漏洞(0day)
    阅读须知    此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅......
  • 大白话说Python+Flask入门(三)
    写在前面今天状态很不好,我发现学这部分知识的时候,会出现溜号或者注意力无法集中的情况。我能想到的是,大概率是这部分知识,应该是超出了我现在的水平了,也就是说我存在知识断层了,整体感觉真的是一知半解。那有同学会问了,那你能说明白吗?我理解的肯定能呀,来往下看!Flask的使用1、......