因为我用WebClient可以下载到web上的一张图片,但是使用HttpWebRequest却没办法下载到,取得的流的字节长度总是比WebClient直接下载下来的数组要短!
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
Stream responseStream = response.GetResponseStream();
byte[] bytes = new byte[1500];
int m = responseStream.Read(bytes,0 , 1200);
Console.WriteLine(m);
因为我是先不知道返回的有多大,所以先声明了个比较大的数组! 返回的m值 比
WebClient Getpic = new WebClient();
byte[] ImageBytes = Getpic.DownloadData("http://2452.753.105.196/iode.php");
Console.WriteLine(ImageBytes.Length);
比这样取得的值要小一百多!
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
Stream responseStream = response.GetResponseStream();
byte[] bytes = new byte[1500];
int m = responseStream.Read(bytes,0 , 1200);
Console.WriteLine(m);
因为我是先不知道返回的有多大,所以先声明了个比较大的数组! 返回的m值 比
WebClient Getpic = new WebClient();
byte[] ImageBytes = Getpic.DownloadData("http://2452.753.105.196/iode.php");
Console.WriteLine(ImageBytes.Length);
比这样取得的值要小一百多!
解决方案 »
- ARCGIS Server9.2 发布地图服务问题
- 关于String Template的求助...高手帮忙!thanks~
- 关于增加和减少整数值的线程安全方式的困惑!!求高手解惑
- 我用鼠标在FORM上画了一条直线,为什么把窗口最小化,或者切换窗口时,直线不见了呢?
- winform 安装项目 如何在桌面建立快捷方式 马上结贴就走
- c# 求高手指点
- 一个简单的嵌入javascript到c#文件中的问题
- 关于propertyGrid同时显示多个对象属性的问题!
- 大家帮我看看代码,为啥返回的值时显示不到文本框中呢
- 知道图像的首地址,高度,宽度,怎么保存灰度图片
- combobox 如何列表检索?
- 在C#中。这个怎么实现
你这里读取了 1200 个字节 是否图片大于这个数?
理论上应该是相同的。
你直接取长度看看:
Stream responseStream = response.GetResponseStream();
byte[] bytes = new byte[responseStream.Length];
int m = responseStream.Read(bytes,0 , bytes.Length);
不知道为什么BMP为什么这么麻烦!
**/
/// <summary>
/// 下载服务器文件至客户端 /// </summary>
/// <param name="URL">被下载的文件地址,绝对路径</param>
/// <param name="Dir">另存放的目录</param>
public void Download(string URL, string Dir)
{
WebClient client = new WebClient();
client.Credentials = CredentialCache.DefaultCredentials;
string fileName = URL.Substring(URL.LastIndexOf("/") + 1); //被下载的文件名
//fileName = fileName.Substring()
string Path = Dir + fileName; //另存为的绝对路径+文件名 try
{
WebRequest myre = WebRequest.Create(URL);
//WebResponse webRes = myre.GetResponse();
//long lngFileLength = webRes.ContentLength; //Stream str = webRes.GetResponseStream();
//StreamReader reader = new StreamReader(str);
//byte[] myByte = new byte[(int)lngFileLength]; client.DownloadFile(URL, Path);
//Stream str = client.OpenRead(URL);
//StreamReader reader = new StreamReader(str);
//byte[] mbyte = new byte[100000];
//int allmybyte = (int)myByte.Length;
//int startmbyte = 0; //FileStream fstr = new FileStream(Path, FileMode.OpenOrCreate, FileAccess.Write);//Append只能和写一起用。
//fstr.Write(myByte, 0, allmybyte);
//fstr.Close();
//str.Close();
// while (allmybyte > 0)
// {
// int m = str.Read(mbyte, startmbyte, allmybyte);
// if (m == 0)
// break;
// fstr.Write(mbyte, 0, startmbyte);
// startmbyte += m;
// allmybyte -= m;
// } MessageBox.Show("OK");
//FileStream fs = new FileStream(URL, FileMode.Open, FileAccess.Read);
//BinaryReader r = new BinaryReader(fs);
//byte[] mbyte = r.ReadBytes((int)fs.Length);
//fs.Write(mbyte, 0, (int)fs.Length);
//FileStream fstr = new FileStream(Path, FileMode.OpenOrCreate, FileAccess.Write); //fstr.Write(mbyte, 0, (int)fs.Length);
//fstr.Close(); }
catch(Exception exception)
{
//MessageBox.Show(exp.Message,"Error");
}
}
//WebResponse webRes = myre.GetResponse();
//long lngFileLength = webRes.ContentLength; //Stream str = webRes.GetResponseStream();
//StreamReader reader = new StreamReader(str);
//byte[] myByte = new byte[(int)lngFileLength]; client.DownloadFile(URL, Path);
}
MemoryStream mStream = new MemoryStream();
byte[] buffer = new byte[1024];
int bytesRead = responseStream.Read(buffer, 0, buffer.Length);
while (bytesRead > 0)
{
mStream.Write(buffer,0,buffer.Length);
bytesRead = responseStream.Read(buffer, 0, buffer.Length);
}
fs.Close();
str.Close();
response.Close();