如何控制在点击"下载"链接时直接弹出保存对话框,而不是在网页上打开PDF?

laoluo 2003-12-11 06:43:55
我们网页上有一些PDF文件,用户点击下载时总是在IE中打开PDF,但是这种方式总是会遇到不能打开的情况,好的方式是先保存然后用Acrobat reader打开,请问有什么办法控制不让其在网页上打开而是直接调用保存的对话框保存?
(在不使用ZIP或RAR等压缩文件的情况下)
...全文
3343 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
laoluo 2003-12-11
  • 打赏
  • 举报
回复
正在试,一定给各位好心的大哥们加分。
zhuomaocn 2003-12-11
  • 打赏
  • 举报
回复
再来一个
下面是一个ASP解决方案:

文件名:Download.asp

<%
Dim Stream
Dim Contents
Dim FileName
Dim FileExt
Const adTypeBinary = 1
FileName = Request.QueryString("FileName")
if FileName = "" Then
Response.Write "无效文件名."
Response.End
End if
' 下面是不希望下载的文件
FileExt = Mid(FileName, InStrRev(FileName, ".") + 1)
Select Case UCase(FileExt)
Case "ASP", "ASA", "ASPX", "ASAX", "MDB"
Response.Write "受保护文件,不能下载."
Response.End
End Select
' 下载这个文件
Response.Clear
Response.ContentType = "application/octet-stream"
Response.AddHeader "content-disposition", "attachment; filename=" & FileName
Set Stream = server.CreateObject("ADODB.Stream")
Stream.Type = adTypeBinary
Stream.Open
Stream.LoadFromFile Server.MapPath(FileName)
While Not Stream.EOS
Response.BinaryWrite Stream.Read(1024 * 64)
Wend
Stream.Close
Set Stream = Nothing
Response.Flush
Response.End
%>
使用:Download.asp?FileName=/Files/MY.doc
把你的DOC文件放到根目录Files下,你也可以放到其它地方了。

如:
<A HREF="Download.asp?FileName=/Files/MY.doc">点击下载WORD文档</A>
孟子E章 2003-12-11
  • 打赏
  • 举报
回复
<%
Response.ContentType = "application/octet-stream"
Response.AddHeader "Content-Disposition","attachment; filename=xxx.pdf"
response.binarywrite getBinaryFile(Server.MapPath("xxx.pdf"))
function getBinaryFile(fileSpec)
Dim adTypeBinary
adTypeBinary = 1
Dim oStream
set oStream = server.createobject("ADODB.Stream")
oStream.Open
oStream.Type = adTypeBinary
oStream.LoadFromFile fileSpec
getBinaryFile= oStream.read
set oStream=nothing
end function
%>
zhuomaocn 2003-12-11
  • 打赏
  • 举报
回复
稍微改一下就差不多了

dim StrFile,StrFilename
dim IntFilelength
dim Range,length
dim s,f
dim ErrNo,ErrDes

StrFile=request.QueryString.Item("filename")
if StrFile = "" then
response.Redirect "message.asp?ErrNo=3"

else
StrFilename = server.MapPath(StrFile)
if instr(StrFilename,"\temp\") then
else
response.Redirect "message.asp?ErrNo=0&ErrDes=" & StrFile
end if
'Response.Buffer = True
'Response.Clear
Set s = Server.CreateObject("ADODB.Stream")
s.Type = 1
s.Mode=3
s.Open
on error resume next
Set fso = Server.CreateObject("Scripting.FileSystemObject")
if not fso.FileExists(strFilename) then
set fso=nothing
s.close
set s= nothing
response.Redirect "message.asp?ErrNo=0"
end if

Set f = fso.GetFile(strFilename)
IntFilelength = f.size
s.LoadFromFile(strFilename)
if err then
set fso=nothing
s.close
set s= nothing
set f=nothing
ErrNo = Err.Number
ErrDes = Err.Description
response.Redirect "message.asp?ErrNo=" & ErrNo & "&ErrDes=Download<br/>" & ErrDes
end if
Response.ContentType = "application/octet-stream"
Response.AddHeader "Content-Disposition", "attachment; filename=" &f.name
Response.CharSet = "UTF-8"
Range=Mid(Request.ServerVariables("HTTP_RANGE"),7)
if Range<>"" then
length=Clng(Split(Range,"-")(0))
intFilelength=intFilelength-length
s.position=length
end if
Response.AddHeader "Content-Length", intFilelength
Response.BinaryWrite s.Read
'Response.Flush
s.Close
set fso=nothing
set f=nothing
Set s = Nothing

end if
laoluo 2003-12-11
  • 打赏
  • 举报
回复
xzq686:
rar与exe是会提示保存,但是安装了acrobat reader之后下载PDF就会在网页上直接打开,但是PDF的插件与IE配合有问题,总是不能打开。
laoluo 2003-12-11
  • 打赏
  • 举报
回复
楼上的老兄能不能提得更清楚一点,我现在就是打不到这样的代码。
谢谢。
xzq686 2003-12-11
  • 打赏
  • 举报
回复
<html>
<a href="office.rar">下载1</a><br>
<a href="wrar33b3sc.exe">下载2</a><br>
<a href="asd.PDF">下载3</a><br>
</html>
zhuomaocn 2003-12-11
  • 打赏
  • 举报
回复
这个是和本机设置有关。

在explorer-〉工具 ->文件夹选项 ->文件类型

找到pdf后缀的文件,然后在详细设定里,把下载后打开需要确认的勾钩上。

这样就会出现下载对话框了。

当然自己可以这样设,不可能让每个用户都这样,这时候就不能使用默认的下载方式了。
只能自己写代码来下载,搜索一下这边的下载代码很多的。
lions911 2003-12-11
  • 打赏
  • 举报
回复
好象设置什么MIME之类的,你去GOOGLE搜索一下MIME或者在本版搜索一下
内容概要:本文围绕“面向高精度电流控制的PMSM多参数PSO辨识模型研究”,系统阐述了基于Simulink的永磁同步电机(PMSM)多参数辨识方法,重点采用粒子群优化算法(PSO)实现对电机关键内部参数的高精度辨识。研究构建了完整的PMSM控制系统仿真模型,结合智能优化算法,解决了传统参数辨识中精度低、收敛慢的问题,有效提升了电流环控制的动态性能与稳态精度。该方法特别适用于对控制精度和响应速度要求较高的工业应用场景,如高性能伺服系统、电动汽车驱动系统等,具有较强的工程实用价值和科研参考意义。文中提供了完整的Simulink仿真模型与配套代码,确保了研究内容的可复现性和实践操作性。; 适合人群:具备电机控制、自动化或电气工程等相关专业背景,熟悉MATLAB/Simulink仿真环境,从事电机驱动系统研发、控制算法设计或相关领域科研工作的工程师及研究生,尤其适合工作1-5年、希望深入理解先进参数辨识技术的研发人员。; 使用场景及目标:①开展高精度PMSM控制系统的设计与参数辨识研究;②学习并掌握PSO等智能优化算法在电机系统参数辨识中的具体实现与调优技巧;③完成学术论文复现、科研项目验证、毕业设计或工程原型开发,提升对现代电机控制核心技术的理解与应用能力。; 阅读建议:建议读者结合提供的Simulink模型与源代码进行动手实践,按照文档逻辑逐步搭建与调试仿真系统,重点关注PSO算法与电机模型的交互机制、目标函数设计及参数收敛过程,通过对比不同工况下的辨识结果,深入理解算法性能与控制精度之间的内在联系。

28,403

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧