如何使用FSO修改文件夹的名称

作者:cnbruce 来源:cnbruce blog 时间:2008-10-11 14:24:00 

那天突然的一个灵感,是针对防盗链的。正常上传的文件,若被人盗链则增加了自己服务器的负担,上次164.cc就因此被挂。

然后想想对策,目前各类防盗链程序也不少,不过使用也并不简单,还有就是不能免费……

所以,只有自己先想办法。那么,现在看看标题,再想想防盗链,或许就有些眉目了

我可以不定时的修改上传文件所在的文件夹名称,而本站程序是动态获得文件夹名称,这样原先盗用本站文件的站点会因路径的错误而找不到文件,从而也就实现了防盗链。

那么,如何使用FSO修改文件夹的名称呢?

一个简单的函数:

<%
Function fldrename(nowfld,newfld)

nowfld=server.mappath(nowfld)
newfld=server.mappath(newfld)

Set fso = CreateObject("Scripting.FileSystemObject")
if not fso.FolderExists(nowfld) then
    response.write("需要修改的文件夹路径不正确或文件夹名称输入错误")
else
    fso.CopyFolder nowfld,newfld
    fso.DeleteFolder(nowfld)
end if
set fso=nothing

End Function
%>

总的来说就是拷贝当前文件夹的内容到新的文件夹中,然后再删除该文件夹内容,从而间接达到文件夹改名的目的。

这是一个偏执狂问题,因为修改文件夹名称,尤其是要修改名称的该文件夹内容是G量时,这个等待的时间相对FTP远程修改名称就有点不划算了。

有人说FSO可不可以直接修改文件夹名称呢?吾莫之。

应用该函数

<%call fldrename("ex01","ex02")%>

基本意思即将与程序执行文件在同一目录下的 ex01 文件夹名称修改为 ex02

下面是我在本地的测试情况通报:

1,本程序不消耗程序执行时间

2,执行1G文件夹间接改名时间需要50秒左右,其实也就是服务器端的文件复制转移时间

3,CPU消耗不算太高,30%左右

4,若在改名中间突然死机或掉电,则发生两种情况:

    a,新文件夹被建立初期(新文件夹并未建好),下次执行程序,会发生 错误类型:Microsoft VBScript 运行时错误 (0x800A003A)文件已存在,此时只能FTP删除新文件夹再执行(尝试使用FSO删除新文件夹并未凑效)。

    b,已经复制了部分文件,下次执行程序,自动覆盖已复制的文件夹内容,原文件夹内容依然存在。只有在复制完毕后,才会将原文件夹及其文件删除。

5,同时需要注意新文件夹的名称,避免和已有文件夹名称重名,当然也可用程序判断

<%
Function fldrename(nowfld,newfld)

nowfld=server.mappath(nowfld)
newfld=server.mappath(newfld)

Set fso = CreateObject("Scripting.FileSystemObject")
if not fso.FolderExists(nowfld) then
    response.write("需要修改的文件夹路径不正确或文件夹名称输入错误")
else
    if fso.FolderExists(newfld) then 
        response.write("您命名的新文件夹名称已经存在")
    else
        fso.CopyFolder nowfld,newfld
        fso.DeleteFolder(nowfld)
    end if
end if
set fso=nothing

End Function
%>

6,若在修改文件夹名称的同时,文件夹内有数据库相关操作、音乐文件正在被播放,则显示为Microsoft VBScript 运行时错误 (0x800A0046)没有权限,主要即是删除原有文件夹出现的问题(音乐文件已被删除、但文件夹未能被删除)。只有FTP登录处理了。若本文件夹为全图片文件则可以运行成功。

标签:fso,文件夹,名称,asp
0
投稿

猜你喜欢

  • 泛泛而谈界面中的斑马纹设计

    2010-07-15 12:59:00
  • 首页访问感受提升三步曲

    2007-12-13 20:36:00
  • 如何用Sleep函数编译一个定时组件?

    2010-06-13 14:35:00
  • SQL Server 2000的视图中必须小心使用*符号

    2008-12-05 15:38:00
  • css实现简单圆角效果

    2008-11-27 13:11:00
  • CSS文字排版终极指南

    2010-01-19 10:30:00
  • 设计师的职业规划

    2009-08-31 12:52:00
  • 防止表格或或div层被撑开的几种方法

    2008-01-01 15:33:00
  • asp阻止中国ip访问访问

    2011-09-13 12:55:37
  • asp 输出换行的详细说明 原创

    2011-02-24 11:15:00
  • 在HTML中,常见的URL有多种表示方式:

    2009-07-28 12:18:00
  • 为SQL Server数据库传数组参数的变通办法

    2009-10-23 09:26:00
  • Firefox 3.5 新增加的支持(整理)

    2009-08-01 12:51:00
  • 认识延迟时间为 0 的 setTimeout

    2008-04-04 16:37:00
  • discuz 2.0整合asp系统,用户添加函数

    2011-04-02 11:08:00
  • 仿淘宝首页商品分类列表效果

    2009-01-22 13:39:00
  • 教你制作1px边框表格的四种方法

    2008-10-04 10:16:00
  • Javascript 动画初探(原理)

    2009-02-06 15:53:00
  • Javascript世界的最大整数值

    2008-06-23 13:23:00
  • 操作设计要素

    2011-03-04 16:23:00
  • asp之家 网络编程 m.aspxhome.com