我有一个wcf休息,它从andriod设备接收图像并保存到公共共享文件夹中。
一切运行良好但在将图像文件(实际图像大小为15kb)保存到我的共享文件夹时,它以489kb保存。
任何图像文件仅以489kb保存。我发现了为什么它会像这样保存的问题..
这是我的代码..
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest, UriTemplate = "UploadImage")]
public string RecieveImage(Stream ImageStream)
{
try
{
byte[] buffer = new byte[500000];
ImageStream.Read(buffer, 0, 500000);
FileStream f = new FileStream(@"c:\desktop\wcfUploadImage.jpeg", FileMode.OpenOrCreate);
f.Write(buffer, 0, buffer.Length);
f.Close();
f.Dispose();
}
catch (Exception ex)
{
throw new WebFaultException<string>(ex.Message, System.Net.HttpStatusCode.BadRequest);
}
return "Successsfully recieved.";
}
由于字节[500000] ,我只保存489kb的图像。如果我用 ImageStream.length 替换500000,我会收到错误。
以实际尺寸保存图像的正确方法是什么?
答案 0 :(得分:0)
Stream
的{{3}}方法返回实际读取为Int32
的字节数。使用该值。
请注意,如果它返回您要求的确切字节数(例如500000),那么您很可能需要再次读取该流:仍有未读数据。