【问题标题】:How to pass the image file in HttpRequestMessage?如何在 HttpRequestMessage 中传递图像文件?
【发布时间】:2019-11-25 08:17:44
【问题描述】:

我想将图像内容传递给HttpRequestMessage。我正在尝试以下方法。

public  async Task  UploadImage()
{
    string Imgpath = @"d:\Dummy.jpg";
    var requestMessage = new HttpRequestMessage();

    FileStream fileStream = File.OpenRead(Imgpath);
    requestMessage.Content = new StreamContent(fileStream);
}

public static async Task<HttpResponseMessage> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage httpRequestMessage,
    TraceWriter traceWriter)
{
        var imagecontent = httpRequestMessage.Content;
        string Testcontent = imagecontent.ReadAsStringAsync().Result;

        // Testcontent value is coming like this "����qExif"
        var ms = new MemoryStream(Convert.FromBase64String(Testcontent));

        // Here i am getting error the input is not a valid Base-64 string 
        // as it contains a non-base 64 character, more than two padding characters, 
        // or an illegal character among the padding character.     
}

【问题讨论】:

    标签: c# unit-testing azure-functions


    【解决方案1】:

    在将数据传递给 HTTPRequest 之前,您没有将数据转换为 base64 字符串。

    private string ConvertImageToBase64(byte[] imageBytes)
    {
         string base64String = Convert.ToBase64String(imageBytes);
         return base64String;
    }
    

    尝试这样的方法将其转换为base64字符串,然后将内容设置为获得的字符串。

    requestMessage.Content = new StreamContent(base64string);
    

    PS : 您也可以通过multipart/form-data 请求将图像数据以二进制形式传递,然后分别在另一端解码。

    【讨论】:

    • 甚至不需要是多部分/表单数据。事实上,您可以简单地将图像作为原始二进制内容发送到 HTTP 请求中。这使得在服务器端读取它变得超级简单。
    【解决方案2】:

    虽然您可以在 Google 上找到一些示例,但我根本不会这样做。 Azure 已经有了 Blob 存储服务。 It has also this use case on its getting started guide. 我不会使用 HTTP 函数上传文件,而是使用其客户端将其上传到 Azure Blob 存储,并在需要时为其添加触发器。

    我已经在亚马逊上做过类似的事情来处理带有文件上传的表单。在我的特殊情况下,我以“草稿”状态提交表单,将文件直接上传到 S3,然后更新提交状态(我也可以使用 AWS lambda 完成)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-17
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 2019-11-23
      • 2012-11-16
      • 1970-01-01
      相关资源
      最近更新 更多