我已经用python编写了一个简单的脚本来扩展我的技能 - 但是在使用BytesIO时我发现了一些非常奇怪的东西。
这是我的工作脚本:
import requests
url = "http://MY.FAKE.IP.ADDR/Uploader.php"
file = open("test.jpg","rb")
action = {"file" : file, "name" : "test.jpg"}
requests.post(url, files=action)
然而,当我尝试对内存中的图像做同样的事情时(例如,屏幕截图),网络服务器获取空白文件名?这是我的代码:
import requests
from PIL import ImageGrab
from io import BytesIO
url = "http://MY.FAKE.IP.ADDR/phUploader.php"
file_name = "test.jpg"
im = ImageGrab.grab()
output = BytesIO()
im.save(output, "JPEG")
file = output.getvalue()
action ={"file":file,"name":file_name}
requests.post(url,files=action)
该文件在网络服务器上的样子:
然而,文件一旦重命名 - 确实包含了我想要的图像。我无法在此找到任何内容,但为什么这个脚本无法正常工作真的让人感到困惑。
答案 0 :(得分:1)
您正在构建请求files
参数错误,请检查official documentation如何构建它。
在你的情况下:action = {"file": (file_name, file)}
应该做到这一点。