ASP代码实现文件下载功能详解
"ASP实现文件下载功能的代码" 在ASP(Active Server Pages)中,实现文件下载功能通常涉及到将服务器上的文件发送到客户端浏览器,以便用户可以保存到本地。以下是一个ASP实现文件下载功能的代码示例: ```vbscript <% Response.Buffer = True '设置缓冲区,确保数据正确发送 S_ = Request.QueryString("path") '获取URL中的参数,如文件路径 If S_ <> "" Then url = Server.MapPath("/") & S_ '构建服务器上文件的实际路径 Else '如果未提供文件名,可以在这里处理错误或提供默认值 End If Dim objFSO, objFile, flSize, flName Set objFSO = Server.CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.GetFile(url) '获取文件对象 flSize = objFile.Size '获取文件大小 flName = objFile.Name '获取文件名 Set objFile = Nothing Set objFSO = Nothing '创建ADODB.Stream对象来读取文件内容 Set objStream = Server.CreateObject("ADODB.Stream") objStream.Open objStream.Type = 1 '设置流类型为二进制 objStream.LoadFromFile url '加载文件内容到流中 '根据文件扩展名设置Content-Type Select Case LCase(Right(flName, 4)) Case ".asf" ContentType = "video/x-ms-asf" Case ".avi" ContentType = "video/avi" Case ".doc" ContentType = "application/msword" Case ".zip" ContentType = "application/zip" Case ".xls" ContentType = "application/vnd.ms-excel" Case ".gif" ContentType = "image/gif" Case ".jpg", "jpeg" ContentType = "image/jpeg" Case ".wav" ContentType = "audio/wav" Case ".mp3" ContentType = "audio/mpeg" '添加其他文件类型的Content-Type... End Select '设置HTTP响应头 Response.ContentType = ContentType Response.AddHeader "Content-Disposition", "attachment; filename=" & flName '设置附件,提示用户保存文件 Response.ContentLength = flSize '设置响应内容长度 '将文件内容发送到客户端 objStream.CopyTo Response.OutputStream objStream.Close Set objStream = Nothing %> ``` 这段代码首先检查请求中是否提供了文件路径(通过`Request.QueryString("path")`),然后使用`Server.MapPath()`将相对路径转换为服务器上的绝对路径。接着,它利用`Scripting.FileSystemObject`来获取文件对象,获取文件大小和名称。然后创建一个`ADODB.Stream`对象来读取文件内容,并根据文件扩展名设置合适的`Content-Type`,这是浏览器识别文件类型的关键。最后,设置HTTP响应头,包括`Content-Type`和`Content-Disposition`,并把文件内容通过`OutputStream`发送给客户端,触发浏览器的下载行为。 请注意,这个代码片段只是一个基础示例,实际应用中可能需要考虑更多的安全性和错误处理,例如验证文件路径的有效性,防止路径遍历攻击,以及处理可能出现的异常情况。
5[ 标签:asp,文件,功能 ] 需要实现从服务器下载文件的功能,点击"下载"直接弹出文件下载或者迅雷下载的窗口
最好是带详细注释的 , 修改起来比较方便 撒拿旦 回答:1 人气:11 解决时间:2010-06-09 17:33
满意答案好评率:100% <%
Response.Buffer=true
取得要下载的文件,如果不为空。就下载
dim url,trueurl
url="下载文件路径和下载文件名"
fname=Request("filename")
if fname<>"" then
trueurlurl=server.MapPath("/") &url
end if
set objFso=server.CreateObject("scripting.filesystemobject")
set fn=objFso.GetFile(trueurl)
flsize=fn.size
flname=fn.name
set fn=nothing
set objFso=nothing
set objStream=server.CreateObject("adodb.stream")
objStream.Open
objStream.Type=1
objStream.LoadFromFile url
select case lcase(right(flname,4))
case ".asf"
ContentType="video/x-ms-asf"
case ".avi"
ContentType="video/avi"
case ".doc"
case ".zip"
ContentType="application/zip"
case ".xls"
ContentType="application/vnd.ms-excel"
case ".gif"
ContentType="image/gif"
case ".jpg","jpeg"
ContentType="image/jpeg"
case ".wav"
ContentType="audio/wav"
case ".mp3"
ContentType="audio/mpeg3"
case ".mpg", "mpeg"
ContentType="video/mpeg"
case ".rtf"
ContentType="application/rtf"
case ".htm","html"
ContentType="text/html"
case ".txt"
ContentType="text/plain"
Case ".ASP", ".ASA", "ASPX", "ASAX", ".MDB"
Response.Write "受保护文件,不能下载."
Response.End
case else
ContentType="appliation/octet-stream"
end select
Response.AddHeader "Content-Disposition", "attachment; filename="&flname
Response.AddHeader "Content-Length", flsize
剩余5页未读,继续阅读
- 粉丝: 6
- 资源: 15
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 计算机二级Python真题解析与练习资料
- 无需安装即可运行的Windows版XMind 8
- 利用gif4j工具包实现GIF图片的高效裁剪与压缩
- VFH描述子在点云聚类识别中的应用案例
- SQL解释器项目资源,助力计算机专业毕业设计与课程作业
- Java实现Windows本机IP定时上报到服务器
- Windows Research Kernel源码构建指南及工具下载
- 自定义Python插件增强Sublime文本编辑器功能
- 自定义Android屏幕尺寸显示及Ydpi计算工具
- Scratch游戏编程源码合集:雷电战机与猫鼠大战
- ***网上教材管理系统设计与实现详解
- Windows环境下VSCode及Python安装与配置教程
- MinGW-64bit编译opencv库适配Qt5.14
- JavaScript API 中文离线版手册(CHM格式)
- *** 8 MVC应用多语言资源管理技巧
- 互联网+培训资料深度解析与案例分析