Python request上传图片问题 #611
-
如题,我尝试了很久,都没有办法能正常通过内存将图片上传到lsky 错误情况 imgByteArr = io.BytesIO(bg.tobytes())
imgByteArr.name = './test.png'
#bg.save(imgByteArr,format='PNG')
img = io.BufferedReader(imgByteArr)
url = "http://127.0.0.1:14700/api/v1/upload"
header = {
"Authorization": "Bearer TOKEN",
"Accept": "application/json"
}
params = {'strategy_id':3}
myfiles = {'file': img}
return requests.post(url, headers=header, params=params,
files=myfiles) # 请求api 权限是没有问题的,bg的类型是 imgByteArr.name = './test.png' 如果不设置名字,就会提示不支持的图片格式;
现在设置了名字后,提示服务异常请稍后再试
目前可行的情况如下:
我的需求虽然我知道可以用PIL的save方法保存到硬盘里面再重新open,但是这样很耗费时间(实测原本直接上传是1s的处理时间,加上保存到磁盘再open打开,就变成了1.8s,几乎于两倍) 而且保存到磁盘还需要进行随机重命名,避免冲突。
需求就是能通过保存到内存中再上传到lsky,求python大佬教一下 ,感激不尽! |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments
-
查看其他的贴子,知道了如果出现错误会在
|
Beta Was this translation helpful? Give feedback.
-
这样可以解决了,我先下载图片,保存在内存中,之后调用接口上传图片 import requests
from io import BytesIO, BufferedReader
download_url = '123.jpg'
response = requests.get(download_url)
if response.status_code == 200:
# 创建 BytesIO 对象并将文件内容写入其中
file_in_memory_bytes = BytesIO(response.content)
file_in_memory_bytes.name = '123.jpg'
file_in_memory = BufferedReader(file_in_memory_bytes)
result = requests.post(
url=f'{url}/upload',
headers={
'Authorization': 'Bearer ',
'Accept': 'application/json'
},
files={'file': file_in_memory}
)
print(result.text)
print(result.json()) |
Beta Was this translation helpful? Give feedback.
这样可以解决了,我先下载图片,保存在内存中,之后调用接口上传图片