Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# REST响应尝试使用IMG或其他文件类型_C#_Rest - Fatal编程技术网

C# REST响应尝试使用IMG或其他文件类型

C# REST响应尝试使用IMG或其他文件类型,c#,rest,C#,Rest,我有一个问题,我有一个rest响应的例子,总是字符串,它假设下载文件的内容,但可能有很多不同的文件,例如PNG,现在如果我得到一个字符串作为响应,是否可以在最后将其转换回PNG,我尝试了以下方法: byte[] array = Encoding.ASCII.GetBytes(result.data); //response content MemoryStream ms = new MemoryStream(array); Image i = Image.FromStream(ms); 我不认

我有一个问题,我有一个rest响应的例子,总是字符串,它假设下载文件的内容,但可能有很多不同的文件,例如PNG,现在如果我得到一个字符串作为响应,是否可以在最后将其转换回PNG,我尝试了以下方法:

byte[] array = Encoding.ASCII.GetBytes(result.data); //response content
MemoryStream ms = new MemoryStream(array);
Image i = Image.FromStream(ms);
我不认为我从rest获得的base64字符串是这样的(其中的一部分,如果我remmebr base64以3==结尾,并且没有任何不可打印的字符):


�PNG\r\n\n\0\0\0\rIHDR\0\0�\0\0\0�\b\0\0\0���\0\0\0sRGB\0���\0\0\0gAMA\0\0��\v�a\0\0\0\tpHYs\0\0t\0\0t�fx\0\0\f\aIDATx^��!x�L���Jde%�yY�D�H$�d%2��s��高清%y� 假设您从API响应返回base64字符串,您可以执行如下操作

byte[] bytes = Convert.FromBase64String(result.data);
Image image;
using (MemoryStream ms = new MemoryStream(bytes))
{
    image = Image.FromStream(ms);
}
return image;
或者您可以将其直接保存到文件中

string filePath = "Image.png";
File.WriteAllBytes(filePath, Convert.FromBase64String(result.data));
编辑1:

如何从web API返回数据?您可以这样做以返回字节数组,然后直接使用该数组写入流

var result = new HttpResponseMessage(HttpStatusCode.OK);
String filePath = HostingEnvironment.MapPath("~/imagename.png");
FileStream fileStream = new FileStream(filePath, FileMode.Open);
Image image = Image.FromStream(fileStream);
MemoryStream memoryStream = new MemoryStream();
image.Save(memoryStream, ImageFormat.Jpeg);
result.Content = new ByteArrayContent(memoryStream.ToArray());
result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png");
return result;
在客户端,您可以执行以下操作

var data = response.Content.ReadAsByteArrayAsync().Result;
Image image;
using (MemoryStream ms = new MemoryStream(data))
{
    image = Image.FromStream(ms);
}
return image;

请检查下面的编辑。我没有任何访问服务器端的权限。根据您在问题中提供的示例数据,您的API似乎正在返回字节数组。尝试一下我在上面的回答中提到的客户端代码。是的,我在这个代码的基础上做了一些修补,它成功了。