在网站的制作中经常需要开发下载文件的功能,下面三种下载文件的办法:
1、asp实现下载的代码 <% 2、使用webclient
filename = request.querystring("filename")
if filename = "" then
response.write "请输入filename参数,指定下载的文件名"
else
response.contenttype = "application/octet-stream"
response.addheader "content-disposition", "attachment; filename =" & filename
set filestream = server.createobject("adodb.stream")
filestream.mode = 3
filestream.type = 1
filestream.open
filestream.loadfromfile( server.mappath(filename))
response.binarywrite( filestream.read )
filestream.close()
set filestream = nothing
end if
% >把上述代码存成asp类型的文件,使用时类似:download.asp?filename=a.gif。
在下载按钮事件中加入如下代码 system.net.webclient wc = new system.net.webclient(); 上述代码会把服务器端的a.gif文件在没有任何提示的情况下下载的客户端的c盘,没有任何提示还是比较可怕的,不过有的时候确实需要这样做。该代码也可以在桌面程序运行。
wc.downloadfile( "http://localhost/a.gif", "c:\a.gif");
3、带有下载提示的asp.net下载代码 //打开要下载的文件 该方法有下载提示框,服务器端可以知道何时下载完毕。
system.io.filestream r = new system.io.filestream(filename, system.io.filemode.open);
//设置基本信息
response.buffer = false;
response.addheader("connection", "keep-alive");
response.contenttype = "application/octet-stream";
response.addheader("content-disposition", "attachment;filename=" + system.io.path.getfilename(filename));
response.addheader("content-length", r.length.tostring());
while (true)
{
//开辟缓冲区空间
byte[] buffer = new byte[1024];
//读取文件的数据
int leng = r.read(buffer, 0, 1024);
if (leng == 0)//到文件尾,结束
break;
if (leng == 1024)//读出的文件数据长度等于缓冲区长度,直接将缓冲区数据写入
response.binarywrite(buffer);
else
{
//读出文件数据比缓冲区小,重新定义缓冲区大小,只用于读取文件的最后一个数据块
byte[] b = new byte[leng];
for (int i = 0; i < leng; i++)
b[i] = buffer[i];
response.binarywrite(b);
}
}
r.close();//关闭下载文件
response.end();//结束文件下载
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 注册表 操作系统 服务器 应用服务器