将上传的UIImage作为PNG文件发送到服务器

时间:2019-07-19 12:56:20

标签: ios swift multipartform-data

我正在尝试将上传的图像发送到服务器。我正在从照片中成功获取图像,并将其附加到ViewController中的UIImageView中。现在,我需要将此图像与其他数据一起发送到服务器。我可以成功发送除图像以外的所有数据。

这是我的功能:

    static void Main(string[] args)
    {
        Console.WriteLine("Hello World!");

        var converter = new HtmlConverter();
        var html = "<html>" +
            "<body>" +
            "<p>This is a shitty html code</p><p>This is another html line</p>" +
            "<span style='left:356px;top:34px;position:absolute;'>" +
            "<img src='data:image/gif;base64,R0lGODlhFABgAJEAAAAAAP///////wAAACH5BAEAAAIALAAAAAAUAGAAAAKKjI+py+0Po5y02ouz3rz7nwAiMJHXaEZphYJMK60UrGK0i9yPXI6l7cNxeAeUbsFLBXMKkzLUNDyhxaJRdpxdQ1dnFfmdRqVWIvkcE+XUP7S0i8aO4e46mLpj2rnszbK29/IVE2Dm8gchljio0iekYSiUJWgR2WD0WDZ5p2WJ55kZKjpKWmp66lIAADs%3D'/>" +
            "</span>" +
            "</body>" +
            "</html>";
        var bytes = converter.FromHtmlString(html);
        File.WriteAllBytes("image.jpg", bytes);
    }

此方法无效。因为应该将其制成多部分表单数据

如何将func重写为多部分表单数据,以将图像转换为PNG文件并将其附加到API请求中?

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

问题的答案在很大程度上取决于您尝试将数据发送到服务器的方式。具有讽刺意味的是,您根本没有提供任何信息。如果这是基于JSON的API,则两种最可能的解决方案是:

  • 您将需要将数据转换为base64字符串
  • 您将需要发送多部分表单数据

所有这些都应该在您的API文档中的某个地方进行介绍。对于base64,事情非常简单;您可以使用image.pngData()?.base64EncodedString()。包含多部分的表单数据要复杂一些,但是您可以在上面找到很多帖子,例如this one

对于非JSON,我想您可以使用正确的内容类型标头发布原始数据。但这又取决于API的实现。

无论如何,您还可以尝试查找错误(如果有)。