任何上传图像文件都以相同的大小保存

时间:2013-09-16 07:53:58

标签: asp.net wcf web-services wcf-binding wcf-rest

我有一个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,我会收到错误。

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

1 个答案:

答案 0 :(得分:0)

Stream的{​​{3}}方法返回实际读取为Int32的字节数。使用该值。

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