欢迎访问宙启技术站
智能推送

使用urllib3模块在Python中进行文件上传和下载的 实践

发布时间:2024-01-16 06:11:43

urllib3是一个功能强大的HTTP库,可以用来进行文件上传和下载的操作。下面是基于urllib3模块的文件上传和下载的 实践,包含了使用例子。

文件上传:

1. 导入必要的模块:

import urllib3

2. 创建urllib3.PoolManager实例:

http = urllib3.PoolManager()

3. 使用urllib3.encode_multipart_formdata函数编码文件数据:

with open('file.txt', 'rb') as file:
    file_data = file.read()
    encoded_data, headers = urllib3.encode_multipart_formdata(files={'file': ('file.txt', file_data)})

4. 发送POST请求上传文件:

response = http.request('POST', 'http://example.com/upload', body=encoded_data, headers=headers)

完整的文件上传示例代码:

import urllib3

http = urllib3.PoolManager()

with open('file.txt', 'rb') as file:
    file_data = file.read()
    encoded_data, headers = urllib3.encode_multipart_formdata(files={'file': ('file.txt', file_data)})

response = http.request('POST', 'http://example.com/upload', body=encoded_data, headers=headers)
print(response.status)
print(response.data)

文件下载:

1. 导入必要的模块:

import urllib3

2. 创建urllib3.PoolManager实例:

http = urllib3.PoolManager()

3. 发送GET请求下载文件:

response = http.request('GET', 'http://example.com/file.txt')
with open('downloaded_file.txt', 'wb') as file:
    file.write(response.data)

完整的文件下载示例代码:

import urllib3

http = urllib3.PoolManager()

response = http.request('GET', 'http://example.com/file.txt')
with open('downloaded_file.txt', 'wb') as file:
    file.write(response.data)

以上是使用urllib3模块在Python中进行文件上传和下载的 实践。对于文件上传,需要使用urllib3.encode_multipart_formdata函数对文件数据进行编码,并使用POST请求发送数据。对于文件下载,直接发送GET请求即可,并将返回的数据写入文件中。这些操作都是非常简单和高效的,适用于大多数文件上传和下载的场景。