如何在HTTP POST有效负载中存储JPG图像

时间:2019-09-17 04:28:25

标签: python http flask vegeta

当前,我有一个简单的Flask服务器,一旦用户点击/端点,它将呈现一个HTML表单,供她选择要上传的图像。单击“提交”后,服务器将图像作为POST请求接收,对其进行一些处理,并返回带有结果分析的JSON,例如:

{
"status": "ok",
"coins found": 10
}

浏览器一切正常。我什至设法使用Postman绕过了表单填充阶段,并将带有图像的POST请求直接发送到服务器,并获得了预期的响应。

在下一阶段,我想看看更改图像处理管道将如何影响服务器吞吐量。为此,我打算使用Vegeta,现在我需要将有效负载作为文本文件使用,以便可以告诉Vegeta如何创建执行攻击的请求。

我真正想知道的是以下内容:“如何将jpg图像存储在纯文本文件中,以便vegeta可以拾取它,并且Flask服务器可以对其进行正确解码”。

目前,我尝试读取图像,将字节流编码为base64并将其存储在文件中,例如:

------xx
Content-Disposition: form-data; name="image"; filename="sweden-swedish-flag-national-cycling-jersey.jpg"
Content-Type: image/jpeg


/9j/4AAQSkZJRgABAQEASABIAAD...
------xx--

但是Flask应用无法打开图像,并显示以下错误:OSError: cannot identify image file <_io.BytesIO object at 0x12c17bc50>

为完整起见,这是我用来打开图像的代码,对于来自浏览器和邮递员的请求,它工作正常:

    import io
    from PIL import Image

    bytestream = io.BytesIO(request.files['image'])
    image = Image.open(bytestream)

0 个答案:

没有答案