当Session结束时,Session_onEnd过程被激发,我们能不能在其中写代码删除本站点的临时目录下的文件?

woshihuzi 2005-11-19 05:02:36
我的global.asa文件内容如下,可是不能完成本帖题目所说的功能,请高手帮我看看错在什么地方?

<SCRIPT LANGUAGE=VBScript RUNAT=Server>

Sub Session_onStart
session.timeout=5
End Sub

'==========================================================================
' 删除指定目录下的指定文件
' Path是指定的目录,fileName是指定的文件,可以包含通配符
'==========================================================================
Sub deleteFilesFromPath(Path,fileName)
dim fso,filePathNames
filePathNames = Path+"\"+fileName
set fso = server.CreateObject("scripting.filesystemobject")
fso.DeleteFile filePathNames,false
end Sub

'==========================================================================
' 取得脚本所在站点的虚拟目录
'==========================================================================
Function getWebsitePath()
getWebsitePath = trim(Request.ServerVariables("APPL_PHYSICAL_PATH"))
getWebsitePath = left(getWebsitePath,len(getWebsitePath)-1)
End Function

Sub Session_onEnd
' 在用户Session失效时就删除本站点download目录下的文件
call deleteFilesFromPath(getWebsitePath()+"\download", "*.txt")
End Sub

</SCRIPT>
...全文
189 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
woshihuzi 2005-12-03
  • 打赏
  • 举报
回复
嗬嗬,谢谢各位的关注.经过几天的探讨,我得出的结论跟 BIGbeard(比戈比尔德)老兄一致:

我明白了两点:
1. 在Session_onEnd里头,不能使用Request.ServerVariables("APPL_PHYSICAL_PATH")
也就不能得到站点的虚拟目录.
2. 即使直接指定文件的位置,在Session_onEnd里头,也不能删除文件,创建文件是可以的.
BIGbeard 2005-12-02
  • 打赏
  • 举报
回复
不行的,看我的global.asa文件:

<SCRIPT LANGUAGE=VBScript RUNAT=Server>


Sub Application_onStart

End Sub


Sub Session_onStart

'-----------------------------------------------------------------
' 在Session_onStart当中创建、删除文件是可以的,下面的代码是做实验用的
call CreateFileInPath(getWebsitePath(),"test1.txt","test1",true,false) '遇错继续,不覆盖已存在文件
call CreateFileInPath(getWebsitePath() ,"test2.txt","test2",true,false) '遇错继续,不覆盖已存在文件
call deleteFilesFromPath(getWebsitePath(), "test1.txt",false,true) '遇错停止,删除只读文件
'-----------------------------------------------------------------

Session("WebSitePath") = getWebsitePath()

End Sub


'==========================================================================
' 在指定目录下创建一个指定名字的文本文件
' Path是指定的目录,
' fileName是指定的文件名,
' strContents是文本文件的内容
' onErrorResumeNext是布尔变量,是否允许遇到错误继续执行
' overwriteExistFile是布尔变量,如果要覆盖现有文件,则该值为 True
'==========================================================================
Sub CreateFileInPath(Path,fileName,strContents,onErrorResumeNext,overwriteExistFile)

if onErrorResumeNext then
on error resume next
end if

dim fso,filePathName
filePathName = Path+"\"+fileName
set fso = server.CreateObject("scripting.filesystemobject")
set mFile = fso.CreateTextFile(trim(filePathName),overwriteExistFile)
mFile.WriteLine(strContents)
mFile.Close
set fso = nothing

end Sub


'==========================================================================
' 删除指定目录下的指定文件
' Path是指定的目录
' fileName是指定的文件,可以包含通配符
' onErrorResumeNext是布尔变量,是否允许遇到错误继续执行
' deleteReadOnlyFile是布尔变量,如果要删除只读文件,则该值为 True
' 这种操作危险性特别大,一般不要用
'==========================================================================
Sub deleteFilesFromPath(Path,fileName,onErrorResumeNext,deleteReadOnlyFile)

if onErrorResumeNext then
on error resume next
end if

dim fso,filePathNames
filePathNames = Path+"\"+fileName
set fso = server.CreateObject("scripting.filesystemobject")
fso.DeleteFile filePathNames,deleteReadOnlyFile
end Sub


'==========================================================================
' 取得脚本所在站点的虚拟目录
'==========================================================================
Function getWebsitePath()

getWebsitePath = trim(Request.ServerVariables("APPL_PHYSICAL_PATH"))
getWebsitePath = left(getWebsitePath,len(getWebsitePath)-1)

End Function


Sub Session_onEnd

'---------------------------------------------------------------------------------
' 本来想在在用户Session失效时删除有关的文件
' 后来发现,这是不可能的:
' 根本删除不了任何文件,而创建文件则是可能的,详细情况参见本过程下面的实验
call CreateFileInPath(Session("WebSitePath"),"test3.txt","test3",true,false) '遇错继续,不覆盖已存在文件
call deleteFilesFromPath(Session("WebSitePath"), "test2.txt", false, true)
'---------------------------------------------------------------------------------

End Sub


</SCRIPT>
woshihuzi 2005-11-27
  • 打赏
  • 举报
回复
能否给出具体的办法?
moodboy1982 2005-11-22
  • 打赏
  • 举报
回复
应该可以吧。
zmy0611 2005-11-22
  • 打赏
  • 举报
回复
可以
SP操作Excel技术总结 目录 一、 环境配置 二、 ASP对Excel的基本操作 三、 ASP操作Excel生成数据表 四、 ASP操作Excel生成Chart图 五、 服务器端Excel文件浏览、下载、删除方案 六、 附录 正文 一、 环境配置 服务器端的环境配置从参考资料上看,微软系列的配置应该都行,即: 1.Win9x+PWS+Office 2.Win2000 Professional+PWS+Office 3.Win2000 Server+IIS+Office 目前笔者测试成功的环境是后二者。Office的版本没有特殊要求,考虑到客户机配置的不确定性和下兼容特性,建议服务器端Office版本不要太高,以防止客户机下载后无法正确显示。 服务器端环境配置还有两个偶然的发现是: 1. 笔者开发机器上原来装有金山的WPS2002,结果Excel对象创建始终出现问题,卸载WPS2002后,错误消失。 2. 笔者开发ASP代码喜欢用FrontPage,结果发现如果FrontPage打开(服务器端),对象创建出现不稳定现象,而成功而不成功。扩展考察后发现,Office系列的软件如果在服务器端运行,则Excel对象的创建很难成功。 服务器端还必须要设置的一点是COM组件的操作权限。在命令行键入“DCOMCNFG”,则进入COM组件配置界面,选择Microsoft Excel后点击属性按钮,将三个单选项一律选择自定义,编辑中将Everyone加入所有权限。保存完毕后重新启动服务器。 客户端的环境配置没发现什么特别讲究的地方,只要装有Office和IE即可,版本通用的好象都可以。 二、 ASP对Excel的基本操作 1、 建立Excel对象 set objExcelApp = CreateObject("Excel.Application") objExcelApp.DisplayAlerts = false 不显示警告 objExcelApp.Application.Visible = false 不显示界面 2、 新建Excel文件 objExcelApp.WorkBooks.add set objExcelBook = objExcelApp.ActiveWorkBook set objExcelSheets = objExcelBook.Worksheets set objExcelSheet = objExcelBook.Sheets(1) 3、 读取已有Excel文件 strAddr = Server.MapPath(".") objExcelApp.WorkBooks.Open(strAddr & "\Templet\Table.xls") set objExcelBook = objExcelApp.ActiveWorkBook set objExcelSheets = objExcelBook.Worksheets set objExcelSheet = objExcelBook.Sheets(1) 4、 另存Excel文件 objExcelBook.SaveAs strAddr & "\Temp\Table.xls" 5、 保存Excel文件 objExcelBook.Save (笔者测试保存成功,页面报错。) 6、 退出Excel操作 objExcelApp.Quit 一定要退出 set objExcelApp = Nothing 三、 ASP操作Excel生成数据表 1、 在一个范围内插入数据 objExcelSheet.Range("B3:k3").Value = Array("67", "87", "5", "9", "7", "45", "45", "54", "54", "10") 2、 在一个单元格内插入数据 objExcelSheet.Cells(3,1).Value="Internet Explorer" 3、 选中一个范围 4、 单元格左边画粗线条 5、 单元格右边画粗线条 6、 单元格上边画粗线条 7、 单元格下边画粗线条 8、 单元格设定背景色 9、 合并单元格 10、 插入行 11、 插入列 四、 ASP操作Excel生成Chart图 1、 创建Chart图 objExcelApp.Charts.Add 2、 设定Chart图种类 objExcelApp.ActiveChart.ChartType = 97 注:二维折线图,4;二维饼图,5;二维柱形图,51 3、 设定Chart图标题 objExcelApp.ActiveChart.HasTitle = True objExcelApp.ActiveChart.ChartTitle.Text = "A test Chart" 4、 通过表格数据设定图形 objExcelApp.ActiveChart.SetSourceData objExcelSheet.Range("A1:k5"),1 5、 直接设定图形数据(推荐) objExcelApp.ActiveChart.SeriesCollection.NewSeries objExcelApp.ActiveChart.SeriesCollection(1).Name = "=""333""" objExcelApp.ActiveChart.SeriesCollection(1).Values = "={1,4,5,6,2}" 6、 绑定Chart图 objExcelApp.ActiveChart.Location 1 7、 显示数据表 objExcelApp.ActiveChart.HasDataTable = True 8、 显示图例 objExcelApp.ActiveChart.DataTable.ShowLegendKey = True 五、 服务器端Excel文件浏览、下载、删除方案 浏览的解决方法很多,“Location.href=”,“Navigate”,“Response.Redirect”都可以实现,建议用客户端的方法,原因是给服务器更多的间生成Excel文件。 下载的实现要麻烦一些。用网上现成的服务器端下载组件或自己定制开发一个组件是比较好的方案。另外一种方法是在客户端操作Excel组件,由客户端操作服务器端Excel文件另存至客户端。这种方法要求客户端开放不安全ActiveX控件的操作权限,考虑到通知每个客户将服务器设置为可信站点的麻烦程度建议还是用第一个方法比较省事。 删除方案由三部分组成: A: 同一用户生成的Excel文件用同一个文件名,文件名可用用户ID号或SessionID号等可确信不重复字符串组成。这样新文件生成自动覆盖上一文件。 B: 在Global.asa文件中设置Session_onEnd事件激发删除这个用户的Excel暂存文件。 C: 在Global.asa文件中设置Application_onStart事件激发删除暂存目录下的所有文件。 注:建议目录结构 \Src 代码目录 \Templet 模板目录 \Temp 暂存目录 六、 附录 出错Excel出现的死进程出现是一件很头疼的事情。在每个文件前加上“On Error Resume Next”将有助于改善这种情况,因为它会不管文件是否产生错误都坚持执行到“Application.Quit”,保证每次程序执行完不留下死进程。 补充两点: 1、其他Excel具体操作可以通过录制宏来解决。 2、服务器端打开SQL企业管理器也会产生问题。 New Document

28,406

社区成员

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

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