社区
C#
帖子详情
关于用HttpWebRequest下载文件的问题
pclsprest
2010-11-18 11:44:29
我想用HttpWebRequest下载web服务器上的ppt文件,(HttpWebResponse)request.GetResponse()得到的流.怎么才能还原成ppt文件呢?现在我保存出来的文件,总是打不开
...全文
737
8
打赏
收藏
关于用HttpWebRequest下载文件的问题
我想用HttpWebRequest下载web服务器上的ppt文件,(HttpWebResponse)request.GetResponse()得到的流.怎么才能还原成ppt文件呢?现在我保存出来的文件,总是打不开
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
你的青苹果
2011-07-19
打赏
举报
回复
我也用到这个东西了,麻烦问一下,你上面所说的没读取完,如何才能完整啊!
CSDN上也有示例代码:
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
Stream receiveStream = myHttpWebResponse.GetResponseStream();
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
StreamReader readStream = new StreamReader( receiveStream, encode );
Console.WriteLine("\r\nResponse stream received.");
Char[] read = new Char[256];
int count = readStream.Read( read, 0, 256 );
Console.WriteLine("HTML...\r\n");
while (count > 0)
{
String str = new String(read, 0, count);
Console.Write(str);
count = readStream.Read(read, 0, 256);
}
Console.WriteLine("");
myHttpWebResponse.Close();
readStream.Close();
pclsprest
2010-11-19
打赏
举报
回复
知道错在哪里了..读取返回流的时候出错了.没读取完,呵呵
以专业开发人员为伍
2010-11-18
打赏
举报
回复
奇怪,前边少了一句话,是关于“流”概念的。
以专业开发人员为伍
2010-11-18
打赏
举报
回复
再说,不要胡乱指定GB2312,并且也不应该使用TextReader,网站只是下载一个文件内容流,也就是说文件每一个字节忠实地传递过来,你在客户端用个专门为接收字符串(并且还指定GB2312)的机制当然是画蛇添足了。如果一定要写这么多代码,那么使用 receive.Read 然后固定的buffer大小一块一块地循环下载然后写入 fs 就行了,中间跟TextReader、Encoding没有关系。
实际上调用WebClient的DownloadFile静态方法,写一句话就行了。
pclsprest
2010-11-18
打赏
举报
回复
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://192.168.0.107:82/ppt2010.rar");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
FileStream fs = new FileStream(@"D:\aaa.rar", FileMode.OpenOrCreate, FileAccess.Write);
Stream receive = response.GetResponseStream();
BinaryReader sr = new BinaryReader(receive, Encoding.GetEncoding("GB2312"));
char[] content = new char[response.ContentLength];
sr.Read(content, 0, content.Count());
BinaryWriter sw = new BinaryWriter(fs);
sw.Write(content);
fs.Flush();
fs.Close();
receive.Close();
这么做的
以专业开发人员为伍
2010-11-18
打赏
举报
回复
谁知道你是怎么做的?
pclsprest
2010-11-18
打赏
举报
回复
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://192.168.0.107:82/ppt2010.ppt");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
FileStream fs = new FileStream(@"D:\aaa.ppt", FileMode.OpenOrCreate, FileAccess.Write);
Stream receive = response.GetResponseStream();
byte[] b = new byte[response.ContentLength];
receive.Read(b, 0, b.Count());
fs.Write(b, 0, b.Count());
fs.Flush();
fs.Close();
这么也不对request.GetResponse()返回的流里边是不是还包含HTTP的什么信息?还用把它们去掉吗
pclsprest
2010-11-18
打赏
举报
回复
WebClient 这个我知道,但我要做的是在wince上跑的,net cf里边没有这个类,只能用WebRequest来做,开始我也没指定什么编码格式,直接用是StreamReader来读,不对才加上的.我先试试你说的,谢谢了
使用
HttpWebRequest
实现大
文件
上最新传
通常在WinForm程序中都是采用WebClient方式实现
文件
上传功能,本身这个方式没有
问题
,但是当需要上传大
文件
比如说(300+M)的时候,那么WebClient将会报内存不足异常(Out of Memory Exceptions),究其原因是因为WebClient方式是一次性将整个
文件
全部读取到本地内存中,然后再以数据流形式发送至服务器。本文将讲述如何采用
HttpWebRequest
方式每次读取固定大小数据片段(如4KB)发送至服务器,为大
文件
上传提供解决方案,本文还将详细讲述如何将“
文件
上传”功能做为用户自定义控件,实现模块重用。
C#
HttpWebRequest
上传
文件
示例
这个东东有两个用处 1.这是一个用
HttpWebRequest
类构建完整Http多部请求上传
文件
的示例 2.上传地址是金山文档预览的地址,所以,只要上传的是word、pdf、excel一类的文档,可以通过返回的地址直接在线预览,是一种偷懒的文档在线浏览解决方案。
使用
HttpWebRequest
实现大
文件
上传
通常在WinForm程序中都是采用WebClient方式实现
文件
上传功能,本身这个方式没有
问题
,但是当需要上传大
文件
比如说(300+M)的时候,那么WebClient将会报内存不足异常(Out of Memory Exceptions),究其原因是因为WebClient方式是一次性将整个
文件
全部读取到本地内存中,然后再以数据流形式发送至服务器。本文将讲述如何采用
HttpWebRequest
方式每次读取固定大小数据片段(如4KB)发送至服务器,为大
文件
上传提供解决方案,本文还将详细讲述如何将“
文件
上传”功能做为用户自定义控件,实现模块重用。
C# asp.net http
HttpWebRequest
模拟浏览器请求
下载
文件
到本地.txt
C# asp.net http
HttpWebRequest
模拟浏览器请求
下载
文件
到本地
C#
httpwebrequest
多线程
下载
类
C# 多线程基本于
httpwebrequest
实现的
下载
功能 每个线程均可以通过事件追踪情况
C#
110,570
社区成员
642,565
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章