首页 > 解决方案 > 如何在 HttpRequestMessage 中传递图像文件?

问题描述

我想将图像内容传递到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-testingazure-functions

解决方案


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

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

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

requestMessage.Content = new StreamContent(base64string);

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


推荐阅读