【发布时间】:2011-11-19 18:57:18
【问题描述】:
我有以下代码:
var request = (HttpWebRequest)HttpWebRequest.Create(url);
var response = request.GetResponse();
var stream = response.GetResponseStream();
if (stream != null) {
Image newImage = Image.FromStream(stream, true);
pic.Thumb = newImage.ImageToByteArray();
}
如果读取超时怎么办?或者连接在下载过程中中止?
文档说如果ArgumentException不是有效格式或为空,它会抛出一个异常,但我不知道如果图像只是部分下载,它是否会抛出该异常。
不幸的是,我不能依靠 ContentLength 标头来告诉我文件的正确大小,因为服务器位于并提供了比文件实际长度更大的内容长度。所以我希望 Image.FromStream 能够判断图像是否完整。
谁能在这里提供一些见解?
注意:ImageToByteArray 只是一种扩展方法,它使用内存流将Image 转换为byte[]
更新:
根据 Darin 的说法,当您尝试保存图像时会引发 ExternalException。但是,我自己截断图像文件的测试表明,如果图像的字节数不正确,FromStream 实际上会引发 ArgumentException。
【问题讨论】:
标签: c# .net httpwebrequest gdi+ gdi