任何上传的图像文件都以相同的大小保存
Posted
技术标签:
【中文标题】任何上传的图像文件都以相同的大小保存【英文标题】:Any upload image file is saving with same size 【发布时间】:2013-09-20 07:16:11 【问题描述】:我有一个 wcf rest,它正在从安卓设备接收图像并保存到公共共享文件夹中。
一切正常,但在将图像文件(实际图像大小为 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.";
因为 byte[500000] 我只保存了 489kb 的图像。如果我将 500000 替换为 ImageStream.length,则会出现错误。
保存实际大小的图像的正确方法是什么?
【问题讨论】:
你只读取了500Kb...你需要读取直到Read
方法返回0。而且确实你必须使用ImageStream.length
读取整个文件,使用它时会出现什么错误?尝试将其转换为 int
,因为它返回 long
。
【参考方案1】:
Stream
的Read
方法返回它实际上读取为Int32
的字节数。使用该值。
请注意,如果它返回您要求的确切字节数(例如 500000),那么您很可能需要再次读取流:仍有未读取的数据。
【讨论】:
谢谢..我没有得到“请注意,如果它完全返回您要求的最大值(例如 500000),那么您需要再次阅读流:那里仍然是未读数据。”观点。你能简单解释一下吗 @Balu 对不起我的英语,我已经修复了语法错误。我的意思是你应该Read
data 直到返回的字节数为零。
没关系 Agenfire.. :) 在这里我又发布了一个问题,请纠正老兄....***.com/questions/18827088/… 或codeproject.com/Questions/654219/… 或social.msdn.microsoft.com/Forums/vstudio/en-US/…以上是关于任何上传的图像文件都以相同的大小保存的主要内容,如果未能解决你的问题,请参考以下文章
画布图像的图像效果不使用 php 上传保存,但适用于下载相同的画布文件