ASP实现网页打开任何类型文件都提示保存的方法

网络编程 2025-03-25 10:08www.168986.cn编程入门

在日常的网络浏览过程中,我们经常会遇到这样的情况:点击一个链接后,会根据客户端机器是否安装了Office软件,决定是直接打开Word文件还是弹出保存对话框。这是因为浏览器在尝试理解文件的类型,并据此决定如何处理这个文件。有时候我们可能希望无论文件类型如何,都直接让客户端保存文件,而不是尝试打开它。为了满足这一需求,我们可以借助ASPUpload组件的SendBinary方法来实现。

对于存储在服务器硬盘上的文件,我们可以使用以下代码来实现这一需求:

```asp

<%

Dim Upload, FilePath

Set Upload = Server.CreateObject("Persits.Upload")

FilePath = Server.MapPath(".") & "\" & "2003529213019.txt"

'SendBinary参数说明:

'参数一:文件物理路径

'参数二:是否将文件的MIME类型等信息传送给浏览器

'参数三:文件类型,可以指定具体的MIME类型,但一般都可以使用application/octet-binary

'参数四:让客户端保存文件还是直接打开。True保存;False(默认)打开

Upload.SendBinary FilePath, True, "application/octet-binary", True

%>

```

而对于存储在数据库中的文件,处理方式稍有不同。我们可以通过以下代码实现:

```asp

<%

Dim objConn, objRs

Set objConn = Server.CreateObject("ADODB.Connection")

Set objRs = Server.CreateObject("ADODB.RecordSet")

objConn.Open "Driver={Microsoft Aess Driver (.mdb)};dbq=" & Server.MapPath("db1.mdb")

objRs.Open "select from t5 where id=2", objConn, 1, 3

Response.ContentType = "application/octet-stream"

Response.AddHeader "Content-Disposition", "attachment;filename=" & objRs("filename")

Response.AddHeader "Content-Length", CStr(objRs("size")) '此处必须用CStr转换

Response.BinaryWrite objRs("file")

objRs.Close

Set objRs = Nothing

objConn.Close

Set objConn = Nothing

%>

```

这种方法要求保存文件时需要同时保存文件名和文件大小。如果未指定文件名和大小,浏览器会根据其默认行为处理文件:如果认识文件类型,则自动打开;如果不认识,则提示用户保存。通过这种方式,我们可以确保无论文件的来源和类型如何,都能让用户直接保存文件,而不是在客户端尝试打开它。这样的处理方式增强了用户体验,确保了文件的正确传输。

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by