使用FSO修改文件夾的名稱實現(xiàn)文件轉(zhuǎn)移防盜鏈
更新時間:2008年01月08日 12:46:46 作者:
使用FSO修改文件夾的名稱實現(xiàn)文件轉(zhuǎn)移防盜鏈
那天突然的一個靈感,是針對防盜鏈的
正常上傳的文件,若被人盜鏈則增加了自己服務(wù)器的負(fù)擔(dān),上次164.cc就因此被掛
然后想想對策,目前各類防盜鏈程序也不少,不過使用也并不簡單,還有就是不能免費……
所以,只有自己先想辦法。那么,現(xiàn)在看看標(biāo)題,再想想防盜鏈,或許就有些眉目了
我可以不定時的修改上傳文件所在的文件夾名稱,而本站程序是動態(tài)獲得文件夾名稱,這樣原先盜用本站文件的站點會因路徑的錯誤而找不到文件,從而也就實現(xiàn)了防盜鏈。
那么,如何使用FSO修改文件夾的名稱呢?
一個簡單的函數(shù):
<%
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
%>
總的來說就是拷貝當(dāng)前文件夾的內(nèi)容到新的文件夾中,然后再刪除該文件夾內(nèi)容,從而間接達(dá)到文件夾改名的目的。
這是一個偏執(zhí)狂問題,因為修改文件夾名稱,尤其是要修改名稱的該文件夾內(nèi)容是G量時,這個等待的時間相對FTP遠(yuǎn)程修改名稱就有點不劃算了。
有人說FSO可不可以直接修改文件夾名稱呢?吾莫之。
應(yīng)用該函數(shù)
<%call fldrename("ex01","ex02")%>
基本意思即將與程序執(zhí)行文件在同一目錄下的 ex01 文件夾名稱修改為 ex02
下面是我在本地的測試情況通報:
1,本程序不消耗程序執(zhí)行時間
2,執(zhí)行1G文件夾間接改名時間需要50秒左右,其實也就是服務(wù)器端的文件復(fù)制轉(zhuǎn)移時間
3,CPU消耗不算太高,30%左右
4,若在改名中間突然死機或掉電,則發(fā)生兩種情況:
a,新文件夾被建立初期(新文件夾并未建好),下次執(zhí)行程序,會發(fā)生 錯誤類型:Microsoft VBScript 運行時錯誤 (0x800A003A)文件已存在,此時只能FTP刪除新文件夾再執(zhí)行(嘗試使用FSO刪除新文件夾并未湊效)。
b,已經(jīng)復(fù)制了部分文件,下次執(zhí)行程序,自動覆蓋已復(fù)制的文件夾內(nèi)容,原文件夾內(nèi)容依然存在。只有在復(fù)制完畢后,才會將原文件夾及其文件刪除。
5,同時需要注意新文件夾的名稱,避免和已有文件夾名稱重名,當(dāng)然也可用程序判斷
<%
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("您命名的新文件夾名稱已經(jīng)存在")
else
fso.CopyFolder nowfld,newfld
fso.DeleteFolder(nowfld)
end if
end if
set fso=nothing
End Function
%>
6,若在修改文件夾名稱的同時,文件夾內(nèi)有數(shù)據(jù)庫相關(guān)操作、音樂文件正在被播放,則顯示為Microsoft VBScript 運行時錯誤 (0x800A0046)沒有權(quán)限,主要即是刪除原有文件夾出現(xiàn)的問題(音樂文件已被刪除、但文件夾未能被刪除)。只有FTP登錄處理了。若本文件夾為全圖片文件則可以運行成功。
正常上傳的文件,若被人盜鏈則增加了自己服務(wù)器的負(fù)擔(dān),上次164.cc就因此被掛
然后想想對策,目前各類防盜鏈程序也不少,不過使用也并不簡單,還有就是不能免費……
所以,只有自己先想辦法。那么,現(xiàn)在看看標(biāo)題,再想想防盜鏈,或許就有些眉目了
我可以不定時的修改上傳文件所在的文件夾名稱,而本站程序是動態(tài)獲得文件夾名稱,這樣原先盜用本站文件的站點會因路徑的錯誤而找不到文件,從而也就實現(xiàn)了防盜鏈。
那么,如何使用FSO修改文件夾的名稱呢?
一個簡單的函數(shù):
復(fù)制代碼 代碼如下:
<%
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
%>
總的來說就是拷貝當(dāng)前文件夾的內(nèi)容到新的文件夾中,然后再刪除該文件夾內(nèi)容,從而間接達(dá)到文件夾改名的目的。
這是一個偏執(zhí)狂問題,因為修改文件夾名稱,尤其是要修改名稱的該文件夾內(nèi)容是G量時,這個等待的時間相對FTP遠(yuǎn)程修改名稱就有點不劃算了。
有人說FSO可不可以直接修改文件夾名稱呢?吾莫之。
應(yīng)用該函數(shù)
<%call fldrename("ex01","ex02")%>
基本意思即將與程序執(zhí)行文件在同一目錄下的 ex01 文件夾名稱修改為 ex02
下面是我在本地的測試情況通報:
1,本程序不消耗程序執(zhí)行時間
2,執(zhí)行1G文件夾間接改名時間需要50秒左右,其實也就是服務(wù)器端的文件復(fù)制轉(zhuǎn)移時間
3,CPU消耗不算太高,30%左右
4,若在改名中間突然死機或掉電,則發(fā)生兩種情況:
a,新文件夾被建立初期(新文件夾并未建好),下次執(zhí)行程序,會發(fā)生 錯誤類型:Microsoft VBScript 運行時錯誤 (0x800A003A)文件已存在,此時只能FTP刪除新文件夾再執(zhí)行(嘗試使用FSO刪除新文件夾并未湊效)。
b,已經(jīng)復(fù)制了部分文件,下次執(zhí)行程序,自動覆蓋已復(fù)制的文件夾內(nèi)容,原文件夾內(nèi)容依然存在。只有在復(fù)制完畢后,才會將原文件夾及其文件刪除。
5,同時需要注意新文件夾的名稱,避免和已有文件夾名稱重名,當(dāng)然也可用程序判斷
復(fù)制代碼 代碼如下:
<%
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("您命名的新文件夾名稱已經(jīng)存在")
else
fso.CopyFolder nowfld,newfld
fso.DeleteFolder(nowfld)
end if
end if
set fso=nothing
End Function
%>
6,若在修改文件夾名稱的同時,文件夾內(nèi)有數(shù)據(jù)庫相關(guān)操作、音樂文件正在被播放,則顯示為Microsoft VBScript 運行時錯誤 (0x800A0046)沒有權(quán)限,主要即是刪除原有文件夾出現(xiàn)的問題(音樂文件已被刪除、但文件夾未能被刪除)。只有FTP登錄處理了。若本文件夾為全圖片文件則可以運行成功。
相關(guān)文章
ASP關(guān)于編碼的幾個有用的函數(shù)小結(jié)(utf8)
UTF8轉(zhuǎn)GB2312將UTF8編碼文字轉(zhuǎn)換為GB編碼文字,UTF8編碼文字將轉(zhuǎn)換為漢字的代碼,需要的朋友可以參考下。2011-05-05在ASP中連接MySQL數(shù)據(jù)庫,最好的通過ODBC方法
在ASP中連接MySQL數(shù)據(jù)庫,最好的通過ODBC方法...2006-11-11CreateKeyWord asp實現(xiàn)的由給定的字符串生成關(guān)鍵字的代碼
CreateKeyWord asp實現(xiàn)的由給定的字符串生成關(guān)鍵字的代碼...2007-09-09ASP之處理用Javascript動態(tài)添加的表單元素數(shù)據(jù)的代碼
ASP之處理用Javascript動態(tài)添加的表單元素數(shù)據(jù)的代碼...2007-11-11ASP UTF-8編碼生成靜態(tài)網(wǎng)頁的函數(shù)
按照“FSO生成的網(wǎng)頁文件默認(rèn)編碼格式以及轉(zhuǎn)換成UTF-8編碼方法”,編寫函數(shù)采用用Adodb.Stream對象,成功生成UTF-8網(wǎng)頁文件。2009-11-11ASP保存遠(yuǎn)程圖片到本地 同時取得第一張圖片并創(chuàng)建縮略圖的代碼
采集中 或者 在線添加文章中 都可以用到此功能2008-10-10ReplaceTrim 函數(shù)之a(chǎn)sp實現(xiàn)過濾掉字符中所有的tab和回車和換行的代碼
ReplaceTrim 函數(shù)之a(chǎn)sp實現(xiàn)過濾掉字符中所有的tab和回車和換行的代碼...2007-09-09