0

我有一个 wcf 休息,它正在从安卓设备接收图像并保存到公共共享文件夹中。

一切正常,但是在将图像文件(实际图像大小为 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 保存图像。如果我将 500000 替换为ImageStream.length ,则会出现错误。

以实际大小保存图像的正确方法是什么?

4

1 回答 1

0

StreamRead方法返回它实际读取的字节数Int32。使用该值。

请注意,如果它返回您要求的确切字节数(例如 500000),那么您很可能需要再次读取流:仍有未读取的数据。

于 2013-09-16T09:01:34.843 回答