Python请求:上传图像为字节数组

本文关键字:字节 字节数 数组 图像 请求 Python | 更新日期: 2023-09-27 18:03:22

目标:使用asp.net web/api,定义允许通过字节数组上传图像的签名,并使用python请求测试操作。

问题:除了不支持的媒体类型之外,我似乎无法得到响应

允许:我已经控制了API,所以我可以修改如果需要的话,只要它最终以字节数组结束,所以我不必重写业务层

我的第一次尝试:

(ASP。. Net Api-Controller) Method):

[Route("api/scenes/{id}/images")]
[Route("api/v0/scenes/scenes/{id}/images")]
[HttpPost]
public HttpResponseMessage AddImageToScene(long id, string type, [FromBody] byte[] value)
我的Python脚本:
# FORM THE FULLY QUALIFIED PATH
file_name = name + ".png"
path = os.path.join(resource_path, file_name)
# SEND THE COMMAND
files = {'image': (file_name, open(path, 'rb'), 'image/png')}
url = helper.baseUri + self.route
requests.post(url, files=files)

响应(来自我自己的输出打印机):

[ERROR] Api调用返回错误415 [ERROR]不支持的媒体类型

结论:我试过几种变体,是的,我看过这里的文档,但我似乎不够聪明,无法让它工作。我怀疑我真的不想把它称为图像,因为我把它分解成字节-但我没有看到任何MIME选项,我认为是合适的。

Python请求:上传图像为字节数组

为了子孙后代着想,虽然与我最初的方法有所不同,但我确实实现了以下操作。请注意,我不认为我需要这里的类型作为参数,因为我应该能够从请求头中提取媒体类型…我只是还没开始。

public HttpResponseMessage AddImageToScene2(long id, string type)
    {
        SceneHandler handler = null;
        try
        {

            var content = Request.Content;
            var asBytes = content.ReadAsByteArrayAsync().Result;
            using (handler = new SceneHandler()) // <-- my own custom class
            {
                var image = new ImageNewOrUpdate(asBytes, type);
                var response = handler.AddImage(id, image.Value, image.ImageType);
                return Request.CreateResponse(HttpStatusCode.Created, response);
            }
        }
        catch (Exception ex)
        {
            return new HttpErrorResponseFactory(Request, ex, handler).GetResponse();
        }
    }