python requests接收多个同name文件

需求:

    1.需要向服务器发送多个同name的文件,如何发送请求

    2.服务器后端如何接收到这些同name文件

发送请求样例

    

requests.post(
        url="http://localhost:8080/test",
        data={'name':'xiaoming', 'age':18},
        files=[
            ('file', open("files/1.pdf", 'rb')),
            ('file', open("files/2.pdf", 'rb'))
        ]
    )

    这个发送请求效果同postman中

后端接收探索过程

起初我觉得直接这样获取,应该可以拿到一个list,再for循环输出一下其文件名应该可以正常

@app.route('/test', methods=['POST'])
def test():
    files = request.files['file']
    for each_file in files:
        print(each_file.filename)

然而实际上这里的files仅仅只是一个FileStorage文件对象

于是我尝试多探索几个值

令人惊喜的是request.files里面本身是拥有两个同name的文件的,只是之后获取的时候丢失了,而a['file']很明显是dict形式的获取方式,所以我怀疑这里是先转换成了dict之后再获取的,很明显同name的情况下装换成dict不容乐观,必然要丢失数据。

于是上网搜了相关的关键词,反正我是没搜到相关问题。

没办法,自力更生。明显request.files对象是ImmutableMultiDict类的一个示例,搜一下ImmutableMultiDict类,其来自werzeug.datastructures包中,来看一眼ImmutableMultiDict类的源码。

意料之中的什么也没有呢,那只能找其父类啦

其中ImmutableMultiDictMixin类也出乎意料的好像什么也没有呢

只剩下MultiDict类了,我只能暗暗祈祷,然后!

我没看其实现逻辑,也没看介绍!我只知道这个方法名!getlist!这个方法的参数!key!

那么假如我这样调用是不是就能得到name为file的文件列表了???!!!

request.files.getlist('file')

结果显而易见

### 回答1: 在Python requests中,response对象有很多属性可以打印出来。以下是一些常用的属性: 1. status_code:HTTP响应状态码。 2. headers:HTTP响应头部信息。 3. content:HTTP响应内容的二进制形式。 4. text:HTTP响应内容的文本形式。 5. json():如果响应内容是JSON格式,可以将其转换为Python对象。 6. cookies:HTTP响应中的cookies信息。 7. url:HTTP响应的URL地址。 8. history:HTTP响应的历史信息,即重定向的URL地址。 这些属性可以通过response对象的方法或属性进行访问,例如response.status_code、response.headers等。 ### 回答2: 在Pythonrequests库中,可以打印出来的response相关信息有以下几个: 1. 响应状态码:可以通过response.status_code来获取HTTP请求的响应状态码。例如,200表示请求成功,404表示资源未找到。 2. 响应头信息:可以通过response.headers来获取服务器返回的响应头信息。响应头中包含了一些关键信息,如Content-Type(响应的数据类型)、Server(服务器类型)、Cache-Control(缓存控制)等。 3. 响应内容:可以通过response.content来获取响应的二进制内容,response.text来获取响应内容的文本形式。通常情况下,我们会使用response.text来获取响应,并对其进行处理。 4. 响应Cookies:可以通过response.cookies来获取响应中的Cookies信息。Cookies是在HTTP协议中用于记录用户状态的一种机制,可以用于保持用户会话、身份认证等。 5. 响应时间:可以通过response.elapsed来获取请求的响应时间。响应时间表示服务器从接收到请求到完成处理并返回响应的时间。 总结起来,可以通过response.status_code、response.headers、response.content、response.text、response.cookies、response.elapsed来获取并打印出Python requests库中的响应相关信息。 ### 回答3: 在Pythonrequests库中,response对象有以下几个常用的属性可以打印出来: 1. status_code:返回HTTP请求的状态码,用于判断请求是否成功。例如,200表示请求成功,404表示资源未找到等。 2. text:返回HTTP响应内容的字符串形式。通常用于获取文本类型的响应,如HTML页面、JSON数据等。 3. content:返回HTTP响应内容的二进制形式。可以用于获取非文本类型的响应,如图片、音频、视频等。 4. headers:返回HTTP响应的头部信息,以字典形式存储。可以打印出响应头中的各个字段,如Content-Type、Date等。 5. url:返回请求的URL地址。如果发生了重定向,可以通过打印url来获取最终的URL地址。 6. encoding:返回HTTP响应的编码方式。可以用于判断响应内容的编码方式,如utf-8、gbk等。 7. cookies:返回HTTP响应中的cookies信息,以字典形式存储。可以打印出cookies中的各个字段,如name、value等。 8. json():返回HTTP响应内容的JSON形式。如果响应内容为JSON格式,可以使用该方法获取JSON对象。 通过打印上述属性,我们可以获取HTTP请求的状态码、响应内容、头部信息、URL地址、编码方式、cookies等信息,方便进行后续的数据处理和判断。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值