经常在论坛看见有人求asp.net中编程实现下载的代码,有些还希望能断点续传什么的。 下载,顾名思义是客户端要下,所以载。你硬塞給人家那不叫下载,那其实是“从服务器‘上传’到客户端”。 有些人的想法是向客户端“写一个”你打算他下载的“文件”,在c/s结构中是没有问题的,因为c端来写。但是在asp.net却是不行的,一定会弹出权限的错误,因为b/s结构中没有个c端給你,s端是不可能获得客户机硬盘的写权限的,要不还不是世界大乱了? 上传和下载的根本区别在于一个是“本地主动送”,一个是“本地主动收”。他们都需要有一方来“主动”,上传需要对远程有写权限,下载需要对远程有读权限。现在的情况是服务器根本对客户端没有读写权限,所以实际上在b/s里写这种代码没有用。
其实问题的关键在于权限。b/s和c/s不仅仅是外观上的区别而已。
换个思路,我不要服务器主动,我让客户端主动可以吗?
1、ie的下载功能。包括http协议中规定的下载(对ie本身无法打开的连接文件类型会提示用户是否下载)这是最方便的,你只要給个超级连接就行了,一点代码都不用。局限性在于只对“当前ie无法打开的文件类型”有效。这就是为什么同个东西有些人点了打开浏览,有些人是提示下载,就是浏览器不同(包括组件、版本等)。
2、javascript主动向服务器请求文件,并由js向硬盘上写。(本人没尝试过,所以到底可行与否不知道)
3、由浏览器以外的客户端程序来执行写操作。c/s版因为有客户端,简单的和什么一样。。。b/s版里有什么是“浏览器以外的客户端程序”而又是你可以访问的??没错,木马!放个木马绝对没问题(废话。。)至于怎么放那就是另一方面的事情了。。。
4、让客户端以为这是ie的插件(这也许是,也许不是,不是你就要伪装来骗它),这是3721等喜欢使用的方法。局限性在于和浏览器的设置有关,如果设置关掉相应的自动选项,你急也没办法!
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器