使用Requests进行文件上传和下载
文件上传
文件上传是指向服务器发送文件的过程,通常使用POST请求方式。Requests库提供了一个files参数,可以用来指定要上传的文件。files参数接受一个字典,其中键是服务器接收文件的字段名,值是一个文件对象或者一个文件元组。文件元组的格式为(filename, fileobj [, content_type [, custom_headers]]),其中filename是文件名,fileobj是文件对象,content_type是文件类型,custom_headers是自定义的请求头。
例如,假设我们要向一个URL为https://example.com/upload的接口上传一个图片文件55.png和一个文本文件55.json,我们可以这样写:
import requests
# 打开要上传的文件
image = open('55.png', 'rb')
text = open('55.json', 'rb')
# 构造files参数
files = {
'images': ('55.png', image, 'image/png'),
'file': ('55.json', text)
}
# 发送POST请求
response = requests.post('https://example.com/upload', files=files)
# 关闭文件
image.close()
text.close()
# 处理响应
if response.status_code == 200:
print('上传成功')
else:
print('上传失败')
文件下载
文件下载是指从服务器获取文件的过程,通常使用GET请求方式。Requests库提供了一个content属性,可以用来获取响应内容的二进制形式。我们只需要把content属性写入到一个文件中,就可以实现文件下载。
例如,假设我们要从一个URL为https://example.com/download的接口下载一个PDF文件55.pdf,我们可以这样写:
import requests
# 发送GET请求
response = requests.get('https://example.com/download')
# 处理响应
if response.status_code == 200:
# 获取响应头中的文件名
header = response.headers
filename = header.get('Content-Disposition')
# 如果没有找到文件名,可以自己指定一个
if not filename:
filename = 55.pdf'
# 打开一个新文件
file = open(filename, 'wb')
# 写入响应内容
file.write(response.content)
# 关闭文件
file.close()
print('下载成功')
else:
print('下载失败')