不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
弹出保存窗口下载服务器上的任何文件[未知大小]
编辑:dnawo 日期:2007-08-31
在IE进行文档链接时,如果遇到OLE支持的文档,IE会自动调用相应程序打开它,有时候这种功能并不是我们所需的,虽然我们可以提醒用户用鼠标右键-->"目标另存为...."命令来下载文档,但这样毕竟不太友好,本文描述了利用FSO及Stream方法实现IE直接下载文档。主程序代码如下:
C#版:
复制内容到剪贴板
程序代码

<%
Sub SaveFile(sFile)
Dim sPath,objTs,objFso,F
sPath = Server.MapPath(sFile)
Response.Buffer = True
Response.Clear
Set objTs = Server.CreateObject("ADODB.Stream")
objTs.Open
objTs.Type = 1
On Error Resume Next
Set objFso = Server.CreateObject("Scripting.FileSystemObject")
If Not objFso.FileExists(sPath) Then
Response.Write("<h1>Error:</h1>"&sPath&"你要下载的文件不存在!<p>")
Response.End
End If
Set objFile = objFso.GetFile(sPath)
objTs.LoadFromFile(sPath)
If Err Then
Response.Write("<h1>Error: </h1>Unknown Error!<p>")
Response.End
End If
Response.AddHeader "Content-Disposition","attachment;filename="&objFile.name
Response.AddHeader "Content-Length",objFile.Size
Response.CharSet = "GB2312"
Response.ContentType = "application/octet-stream"
Response.BinaryWrite objTs.Read
Response.Flush
objTs.Close
Set objTs = Nothing
End Sub
Call SaveFile("test.asp")
%>
Sub SaveFile(sFile)
Dim sPath,objTs,objFso,F
sPath = Server.MapPath(sFile)
Response.Buffer = True
Response.Clear
Set objTs = Server.CreateObject("ADODB.Stream")
objTs.Open
objTs.Type = 1
On Error Resume Next
Set objFso = Server.CreateObject("Scripting.FileSystemObject")
If Not objFso.FileExists(sPath) Then
Response.Write("<h1>Error:</h1>"&sPath&"你要下载的文件不存在!<p>")
Response.End
End If
Set objFile = objFso.GetFile(sPath)
objTs.LoadFromFile(sPath)
If Err Then
Response.Write("<h1>Error: </h1>Unknown Error!<p>")
Response.End
End If
Response.AddHeader "Content-Disposition","attachment;filename="&objFile.name
Response.AddHeader "Content-Length",objFile.Size
Response.CharSet = "GB2312"
Response.ContentType = "application/octet-stream"
Response.BinaryWrite objTs.Read
Response.Flush
objTs.Close
Set objTs = Nothing
End Sub
Call SaveFile("test.asp")
%>
C#版:
复制内容到剪贴板
程序代码

<%@ WebHandler Language="C#" Class="Download" %>
using System;
using System.Web;
using System.IO;
public class Download : IHttpHandler {
public void ProcessRequest (HttpContext context) {
byte[] buffer;
FileInfo file = new FileInfo(context.Server.MapPath("/rp Source.rar"));
using (FileStream fs = new FileStream(file.FullName, FileMode.Open, FileAccess.Read))
{
buffer = new byte[fs.Length];
fs.Read(buffer, 0, (int)fs.Length);
}
context.Response.ContentType = "application/octet-stream";
context.Response.AddHeader("Content-Disposition", "attachment;FileName=" + file.Name);
context.Response.AddHeader("Content-Length", file.Length.ToString());
context.Response.BinaryWrite(buffer);
context.Response.End();
}
public bool IsReusable {
get {
return false;
}
}
}
using System;
using System.Web;
using System.IO;
public class Download : IHttpHandler {
public void ProcessRequest (HttpContext context) {
byte[] buffer;
FileInfo file = new FileInfo(context.Server.MapPath("/rp Source.rar"));
using (FileStream fs = new FileStream(file.FullName, FileMode.Open, FileAccess.Read))
{
buffer = new byte[fs.Length];
fs.Read(buffer, 0, (int)fs.Length);
}
context.Response.ContentType = "application/octet-stream";
context.Response.AddHeader("Content-Disposition", "attachment;FileName=" + file.Name);
context.Response.AddHeader("Content-Length", file.Length.ToString());
context.Response.BinaryWrite(buffer);
context.Response.End();
}
public bool IsReusable {
get {
return false;
}
}
}
评论: 0 | 引用: 0 | 查看次数: 4491
发表评论
请登录后再发表评论!