python 通过requests上传UploadFile文件

记录下最近遇到的 代码透传问题

最近新建了一个系统,部分接口需要沿用原来系统的接口,采用直接透传的方式,所以需要写一个通过python后端进行文件上传接口调用的代码,但是遇到了一些问题,主要是不知道如何传参。在此记录下代码和解决思路
话不多说,直接上代码

多个UploadFile文件上传调用

def upload_file(files: list[UploadFile] = File(..., description="多文件上传,只支持docx、pdf、pptx文件"),
                       classification:str = Body(description="行业分类"),
                      id: str = Body(description="请求标识,请求序列号")
                ):
    logger.info(f"上传文件个数:{len(files)},入参:id={id},classification={classification},userId={userId}")
    files =  files_tmp=[]
    #关键在于这个files参数的组装,这里是传的元组
    for file in files:
        files_tmp.append(("files",(file.filename,asyncio.run(file.read()),file.content_type)))
    response = requests.post(url=BASE_URL +"/search/file_upload",files=files_tmp,
                             data={"classification":classification,"userId":userId,"id":id})
    logger.info(f"返回数据:{response.text}")
    return response.text

files是一个数组,里面的对象是:
(“files”,(file.filename,asyncio.run(file.read()),file.content_type))
你可能会问,我咋知道这个参数应该真么传呢?
我一开始也是在网上找了很多资料,参考别人的,后面我发现在requests源码里其实有说明(遇到不会的问题,还是要多看看源码),
这是我找到的源码截图:

在这里插入图片描述

这里对files的内容进行了说明,它是一个list,里面是元组,元组包含了文件名、文件对象、文件类型,这三部分
以上就是代码和解决思路,有用的话希望点赞收藏哈

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值