是否有机会通过API端点上传文件,该端点将多部分/表单数据作为只有该文件URL的内容类型?在
规则:
将整个文件下载到内存中,然后由这个端点上传不是一个选项(不能保证这个盒子会足够大来容纳一个临时文件)。在
问题:
我想将文件分块从一个服务器(GET)流到另一个服务器(multipart/formdatapost)。这可能吗?如何做到这一点?在
流量:
文件服务器<;-GET-my_脚本.py-上传后服务器
下面是下载到内存(RAM)选项的一个简单示例(但这违反了规则):from io import BytesIO
import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder
file_url = '/wp-content/uploads/features/itam/image-banner-asset.png'
requested_file_response = requests.get(file_url, stream=True)
TOKEN_PAYLOAD = {
'grant_type': 'password',
'client_id': '#########',
'client_secret': '#########',
'username': '#########',
'password': '#########'
}
def get_token():
response = requests.post(
'https://upload_server/oauth/token',
params=TOKEN_PAYLOAD)
response_data = response.json()
token = response_data.get('access_token')
if not token:
print("token error!")
return token
token = get_token()
file_object = BytesIO()
file_object.write(requested_file_response.content)
# Form conctent
multipart_data = MultipartEncoder(
fields={
'--': (
'test.png',
file_object # AttributeError: 'generator' object has no attribute 'encode' when I try to pass generator here.
),
'id': '2217',
'fileFieldDefId': '4258',
}
)
# Create headers
headers = {
"Authorization": "Bearer {}".format(token),
'Content-Type': multipart_data.content_type
}
session = requests.Session()
response = session.post(
'https://upload_server/multipartUpdate',
headers=headers,
data=multipart_data,
)
答案是在一个类似于文件的对象创建中,用于流的目的
非常感谢你的帮助。干杯!在
python form表单上传服务器文件_如何使用multipart/form POST将文件上传到需要上载的文件的URL(chunks)...