110,536
社区成员
发帖
与我相关
我的任务
分享
string filepath = @"http://ww4.sinaimg.cn/thumbnail/6741e029jw1dfzrlqr07kj.jpg";
Stream stream = WebRequest.Create(filepath).GetResponse().GetResponseStream();
int size = 1024;
int read = 0;
MemoryStream ms = new MemoryStream();
byte[] buffer = new byte[size];
do
{
buffer = new byte[size];
read = stream.Read(buffer, 0, size);
ms.Write(buffer, 0, read);
} while (read >= size);
Console.WriteLine(ms.Length.ToString());
string filepath = @"http://ww4.sinaimg.cn/thumbnail/6741e029jw1dfzrlqr07kj.jpg";
MemoryStream stream = (MemoryStream)WebRequest.Create(filepath).GetResponse().GetResponseStream();
byte[] buffers = stream.ToArray();
private void CopyStream(Stream instream, Stream outstream)
{
const int bufferLen = 4096;
byte[] buffer = new byte[bufferLen];
int count = 0;
while ((count = instream.Read(buffer, 0, bufferLen)) > 0)
{
outstream.Write(buffer, 0, count);
}
}
无法将类型为“System.Net.ConnectStream”的对象强制转换为类型“System.IO.MemoryStream”。
[Quote=引用 2 楼 loveyan52152112 的回复:]
do
{
buffer = new byte[size];
read = stream.Read(buffer, 0, size);
ms.Write(buffer, 0, read);
}
while (read >= size);//这句有误,有些站点会获取到的数据不全,我前几天就遇到过,可能是因为站点发送过来的数据如一次发送的数据不是buffer 的整数倍时,还没有等数据发送完就退出循环了.应该写成 while (read >0);