その日の突然のインスピレーションは、盗難防止チェーンを目指していました
正常にアップロードされたファイルが誰かによって盗まれた場合、サーバーの負担が増加します。前回、164.CCが掛けられました。
次に、対策を考えてください。現在、多くの盗難防止チェーンプログラムがありますが、使いやすくなく、無料ではありません...
したがって、最初に自分で解決策を考えることしかできません。だから、タイトルを見て、盗難防止チェーンについて考えてみてください。多分あなたはいくつかの手がかりを持っているでしょう。
アップロードされたファイルが随時配置されているフォルダー名を変更でき、このWebサイトのプログラムはフォルダー名を動的に取得します。このようにして、このWebサイトでファイルを最初に盗んだサイトは、パスエラーのためにファイルが見つかりません。したがって、盗難防止リンクが実現します。
では、FSOを使用してフォルダーの名前を変更する方法は?
単純な機能:
コードコピーは次のとおりです。
<%
functionfldrename(nowfld、newfld)
nowfld = server.mappath(nowfld)
newfld = server.mappath(newfld)
setFSO = createObject( "Scripting.filesystemObject")
ifnotfso.folderexists(nowfld)then
Response.Write( "変更する必要があるフォルダーパスが正しくないか、フォルダー名が正しく入力されていません"))
それ以外
fso.copyfoldernowfld、newfld
fso.deletefolder(nowfld)
endif
setfso =何もない
エンド機能
%>
一般に、現在のフォルダーの内容を新しいフォルダーにコピーし、フォルダーの内容を削除して、フォルダーの名前を変更する目的を間接的に実現することです。
これは妄想的な問題です。これは、フォルダー名を変更するとき、特に変更するフォルダーのフォルダーの内容がG数量である場合、FTPが名前をリモートで変更するのと比較して、待機時間は少し採算できないためです。
FSOはフォルダー名を直接変更できると言う人もいますか?やりたくない。
この関数を適用します
<%callfldrename( "ex01"、 "ex02")%>
基本的な意味は、プログラム実行ファイルと同じディレクトリでEX01フォルダー名をEX02に変更することです
これが私のローカルテストレポートです:
1.このプログラムは、プログラムの実行時間を消費しません
2. 1Gフォルダーの間接名変更を実行するには約50秒かかります。これは、実際にはサーバー側のファイルコピーと転送時間です。
3。CPU消費量は高すぎず、約30%
4.名前の変更の途中でマシンが突然クラッシュするか、電源が失われた場合、2つの状況が発生します。
a。新しいフォルダーが最初に作成され(新しいフォルダーはビルドされていません)、次にプログラムが実行されると、エラーが発生します。MicrosoftVBScriptランタイムエラー(0x800A003A)ファイルはすでに存在します。現時点では、FTP後に新しいフォルダーを削除することができます(FSOを使用して新しいフォルダーを削除しようとすると効果的ではありません)。
b。一部のファイルがコピーされています。次にプログラムが実行されると、コピーされたフォルダーコンテンツが自動的に上書きされ、元のフォルダーコンテンツが引き続き存在します。元のフォルダーとそのファイルは、コピー後にのみ削除されます。
5。同時に、既存のフォルダーの名前の複製を避けるために、新しいフォルダーの名前に注意を払う必要があります。もちろん、プログラムを使用して判断することもできます。