Asp.net 任何上载图像文件都以相同大小保存

Asp.net 任何上载图像文件都以相同大小保存,asp.net,wcf,web-services,wcf-binding,wcf-rest,Asp.net,Wcf,Web Services,Wcf Binding,Wcf Rest,我有一个wcf rest,它从andriod设备接收图像并保存到公共共享文件夹中 一切正常,但在将图像文件(实际图像大小为15kb)保存到我的共享文件夹时,它的保存空间为489kb 任何图像文件仅以489kb保存。我发现了为什么要这样储蓄的问题 这是我的密码 [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest, UriT

我有一个wcf rest,它从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.";
}
[WebInvoke(Method=“POST”,ResponseFormat=WebMessageFormat.Json,BodyStyle=WebMessageBodyStyle.WrappedRequest,UriTemplate=“UploadImage”)]
公共字符串ReceiveImage(流ImageStream)
{
尝试
{
字节[]缓冲区=新字节[500000];
ImageStream.Read(缓冲区,0,500000);
FileStream f=新的FileStream(@“c:\desktop\wcfUploadImage.jpeg”,FileMode.OpenOrCreate);
f、 写入(缓冲区,0,缓冲区长度);
f、 Close();
f、 处置();
}
捕获(例外情况除外)
{
抛出新的WebFaultException(例如Message、System.Net.HttpStatusCode.BadRequest);
}
return“成功接收”;
}
由于字节[500000]的原因,我只保存了489kb的图像。如果我将500000替换为ImageStream.length,则会出现错误

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

Stream
的方法返回它实际拥有的字节数读取为
Int32
。使用该值


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

您只读取500Kb。。。您需要一直读取,直到
read
方法返回0为止。实际上,您必须使用
ImageStream.length
来读取整个文件,使用它时有什么错误?尝试将其强制转换为
int
,因为它返回一个
long
。谢谢。。我没有得到“注意,如果它返回的正是max要求的(例如500000),那么您需要再次读取流:仍然有未读数据。”这一点。你能解释一下吗breifly@Balu对不起,我的英语有语法错误。我的意思是,您应该
读取
数据,直到返回的字节数为零在这里,我又发布了一个问题,请感谢老兄。。。。或