//WebClient下载图片
WebClient client = new WebClient();
client.BaseAddress = @"http://img.ui.cn/";
client.DownloadFile(@"data/file/4/7/6/134674.jpg", "D:\\1234.jpg");
//WebResponse WebRequest下载图片
WebRequest request = WebRequest.Create(@"http://img.ui.cn/data/file/4/7/6/134674.jpg");
WebResponse response = request.GetResponse();
using (Stream s = response.GetResponseStream())
{
byte[] data = new byte[response.ContentLength];
s.Read(data, 0, data.Length);
using (FileStream fileS = new FileStream(@"D:\123.jpg", FileMode.Create))
{
#region 读取方式一
int temp = default(byte);
while ((temp = s.ReadByte()) != -1)
{
fileS.WriteByte((byte)temp);
}
#endregion
#region 读取方式二
fileS.Write(data, 0, data.Length);
#endregion
fileS.Flush();
}
}
//=============
在使用fileStream保存文件时,方式一能够成功且正常,方式二下载的图片有问题,但不知道为什么?
正常的结果就是在网页上看到的样子,图片链接可以从代码里找,
不正常的结果如下,像素丢失:
方式2 int i = 0; byte[] data = new byte[reponse.ContentLength]; while ((i = s.Read(data, 0, data.Length)) > 0) { // Read 方法不是传多长就读多长的, 返回值才是实际读取的长度. fileS.Write(data, 0, i); }
还有 你得考虑 contentencoding 是不是 gzip
data 长度随便写个定值就行了(1024), 没准 reponse.ContentLength 太大,
能说清楚是什么问题或者来个问题截图?
问题已补充。