MFC 读取http文件服务器上的文件列表,并选择文件进行下载
你需要学会动态网页制作,至少简单的生成TXT文本,就是网站WEB程序读取目录中的文件列表,以TXT或XML输出
你还需要学会MFC网络编程,就是MFC程序访问/下载某个网址的网页,其实就是读取/下载网站WEB程序动态生成的TXT或者XML内容
当然你也可以静态生成TXT或者XML放置在WEB服务器上
显示的话,就是ListControl,ListView一类,可自绘
下载文件和下载/读取网页基本相同,只是网页是文本是string(当然原始也是BYTE[]),而文件就是很多个字节是BYTE[]
总结的话,就是一个是服务器端要放置有提供文件列表内容的文件
再一个就是MFC网络访问/读取这个文件,解析得到文件列表
学会使用ListControl
和读取网页一样,按字节接收即可
一、简单的说HTTP和FTP是不同的协议。
HTTP是Hyper Text Transfer Protocol,超文本传输协议;
FTP是File Transfer Protocol,文件传输协议;
HTTP是面向网页的,而FTP是面向文件的。
二、详细的解释如下:
1FTP
(1)FTP比HTTP复杂
FTP和HTTP一样都是Internet上广泛使用的协议,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。
(2)FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。
从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而FTP的复杂性就在于此。
2HTTP
HTTP协议是什么
在浏览器的地址栏里输入的网站地址叫做URL (Uniform Resource Locator,统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。
当浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页。
HTTP 协议定义服务器端和客户端之间文件传输的沟通方式。目前HTTP协议的版本是Http11。RFC 2616描述了HTTP协议的具体信息。
这个协议已经成为浏览器和Web站点之间的标准。
当我上网的时候底层是如何进行交互的?
当访问者点击一个超链接的时候,将会给浏览器提交一个URL地址。通过这个URL地址,浏览器便知道去链接那个网站并去取得具体的页面文件(也可能是一张,一个pdf文件)。
HTTP工作的基础就是,连接一个服务器并开始传输文件到浏览器。
HTTP传输的基本过程
在http传输的过程中,被称为客户端的请求者向服务器请求一个文件。
最基本的过程是:
1 客户端连接一个主机;
2 服务器接收连接,
3 客户端请求一个文件,
4 服务器发送一个应答
1、客户与服务器建立连接;
2、客户向服务器提出请求;
3、服务器接受请求,并根据请求返回相应的文件作为应答;
4、客户与服务器关闭连接。
HTTP的性质:
1、HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。这就大大减轻了服务器记忆负担,从而保持较快的响应速度。
2、HTTP是一种面向对象的协议。允许传送任意类型的数据对象。它通过数据类型和长度来标识所传送的数据内容和大小,并允许对数据进行压缩传送。
扩展资料
http代理的作用:
1、突破自身IP访问限制,访问国外站点。如:教育网、169网等网络用户可以通过代理访问国外网站。
2、访问一些单位或团体内部资源,如某大学FTP(前提是该代理地址在该资源的允许访问范围之内),使用教育网内地址段免费代理服务器,就可以用于对教育 网开放的各类FTP下载上传,以及各类资料查询共享等服务。
3、隐藏真实IP:上网者也可以通过这种方法隐藏自己的IP,免受攻击。
-http
/
文件下载
/
@RequestMapping("/downloadfile")
public void offLineResponseActiveFile(String resStr, HttpServletResponse response) {
PrintWriter pw = null;
StringBuffer sb = new StringBuffer();
try {
String fileName = "文件名";
responsesetCharacterEncoding("UTF-8");
responsesetContentType("application/x-msdownload");
responseaddHeader("Cache-Control", "no-cache, no-store, must-revalidate");
responseaddHeader("charset", "utf-8");
responseaddHeader("Pragma", "no-cache");
responsesetHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"; filename=utf-8''" + fileName );
sbappend(resStr);
pw = responsegetWriter();
pwwrite(sbtoString());
pwclose();
responseflushBuffer();
} catch (IOException e) {
loggerinfo("下载文件出错");
eprintStackTrace();
if (pw != null) {
pwclose();
}
} finally {
if (pw != null) {
pwclose();
}
}
}
resStr 字段传写入文件里的内容
文件协议主要用于访问本地计算机中的文件,就如同在windows资源管理器中打开文件一样,注意它是针对本地(本机)的,简单来说,文件协议是访问你本机的文件资源。
http访问本地html是在本地起了一台http服务器,然后你访问自己电脑上的本地服务器,http服务器再去访问你本机的文件资源。
再简单的说:文件协议只是纯粹的请求本地文件,http是架了服务器的。所以也有导致题主所说的某些api只能通过http访问的页面里能够调用。
用socket就行了。
和服务器建立请求。
然后发送请求报文"\r\n\r\n"结束之后是数据。
post分为,application/x-www-form-urlencoded和multipart/form-data boundary=
要是上传文件,就得使用multipart/form-data boundary=
服务器那边根据boundary来解析出数据。
0条评论