我编写了一个简单的脚本来扩展我的 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)
文件在网络服务器上的样子:
但是,该文件一旦重命名 - 确实包含我想要的图像。我在这方面找不到任何东西,为什么这个脚本不起作用真的很令人困惑。