以下は、エディターがあなたと共有したFSOファイルシステムの操作に関する詳細なチュートリアルです。興味のある友達、編集者と一緒にそれについて学びましょう!
機能を実装します:
ファイル(フォルダー)ディレクトリリストには、ディレクトリの下のファイルとフォルダーの検索が提供されます。
ファイルの書き込み、作成、削除は、ファイル(フォルダー)の編集と削除の操作を提供します
フォルダー/ファイルの作成は、フォルダー(ファイル)を作成するために設定されています。
アップロードファイルは、FTPアップロードを無制限のファイルサイズとタイプでシミュレートできます。
興味があれば、問題があれば何の結果も負けません。ここでは、インターネットをサーフィンする時間があまりなく、しばしば世話をすることができないと言います。私は人々が最近この質問をすることがよくあるのを見たので、私はそれが役立つことを望んでそれを投稿しました。
upfso.asp //アップロードされたファイルを制御します
コードコピーは次のとおりです。
@importurl( "admin.css");
server.scripttimeout = 999
'up_filetype = "rar、zip、swf、jpg、png、gif、doc、txt、chm、pdf、ace、jpg、mp3、wma、wmv、bmp"
ifrequest.querystring( "yes")= "アップロード"その後
パス=トリム(リクエスト( "パス"))
'Response.Write(Path& "---")
'Response.End
dimfso、fsoisok、f_filename、モード
f_filename = trim(request( "nn"))
モード= killint(trim(request( "mode"))、0,0,2)
fsoisok = 1
setFSO = server.createObject( "Scripting.filesystemObject")
iferr0then
err.clear
fsoisok = 0
endif
dimd_name、f_name
iffsoisok = 1then
ifinstr(1、path、 ":/")= 0then
PATH =交換(lCase(PATH)、 "/"、 "/")
path = server.mappath(パス)
パス=置換(path& "/"、 "//"、 "/")
それ以外
PATH =交換(lCase(PATH)、 "/"、 "/")
パス=置換(path& "/"、 "//"、 "/")
endif
ifnotfso.folderexists(パス)
response.write「基本パス検索が失敗し、返品」 = '#000080'>
Response.End
endif
endif
setfso =何もない
dimfileup
setFileUp = newupload_file
fileup.getDate(-1)
dimf_filetype、f_file
setf_file = fileup.file( "file")
iflen(f_filename)
iflen(f_filename)
Response.write( "空のファイル、返送してください") = '#000080'> = 'JavaScript:history.go(-1);'>
Response.End
endif
'f_filetype = ucase(f_file.fileext)
'iff_file.filesize> 90000then
'Response.Write( "サイズが制限を超える") = 'JavaScript:history.go(-1);'>
'exitsub
ifisvalidfileName(f_fileName)= falsethen
respons.write( "誤った名前") = '#000080'> = 'JavaScript:history.go(-1);'>
それ以外
dimfileisexists
setFSO = server.createObject( "Scripting.filesystemObject")
fileisexists = fso.fileexists(path&f_filename)
iffileisexists = trueandmode1then
FSO.DELETEFILE(PATH&F_FILENAME)
Response.write( "ファイルは既に存在し、削除されています;") = '#000080'>
f_file.savetofilepath&f_filename
Response.Write(「ここをクリックしてアップロードを続行します: "&path&f_filename&" = '#000080'> ")
ElseiffileIsexists = trueandmode = 1then
Response.write( "ファイルはすでに存在している、上書きしないことを選択した」) = '#000080'>
それ以外
f_file.savetofilepath&f_filename
Response.Write(「ここをクリックしてアップロードを続行します: "&path&f_filename&" = '#000080'> ")
endif
endif
setf_file = Nothing
setFileUp = Nothing
それ以外
DIMPATH、NN、MMODE
nn = trim(request( "nn"))
mmode = trim(request( "mode"))
path = flace(request( "path")、 "//"、 "/")
ifpath = "" thenpath = "../ newup/"
respons.write( " ")
endif
'体験名
functionisvalidfilename(file_name)
isValidFileName = false
dimre、拘束
setre = newRegexp
re.ignorecase = true
re.global = true
re.pattern = "[^_/。a-za-z/d]"
strim = re.replace(file_name、 "")
iffile_name = rentthenisvalidfilename = true
setre =何もない
エンド機能
%>
upload.asp //クラスをアップロードします
コードコピーは次のとおりです。
DimoupFileStream
classupload_file
Dimform、file、err
privatesubclass_initialize
err = -1
Endingub
privatesubclass_terminate
'ClearVariables&Objects
Iferr
opfilestream.close
form.removeall
file.removeall
setform = Nothing
setFile = Nothing
setoupFileStream = Nothing
endif
Endingub
publicsubgetDate(retsize)
'definevariables
dimrequestbindate、sstart、bcrlf、sinfo、iinfostart、iinfoend、tstream、istart、ofileinfo
DimifileSize、Sfilepath、SfileType、SFormValue、SfiLENAME
dimifindstart、ifindend
dimiformstart、iformend、sformname
ifrequest.totalbytes
err = 1
Exitsub
endif
ifretsize> 0then
ifrequest.totalbytes> retsizethen
err = 2
Exitsub
endif
endif
setform = server.createObject( "Scripting.Dictionary")
form.comPareMode = 1
setFile = server.createObject( "Scripting.Dictionary")
file.comPareMode = 1
settream = server.createObject( "adodb.stream")
setoupFileStream = server.createObject( "adodb.stream")
opfilestream.type = 1
oupfilestream.mode = 3
opfilestream.open
opfilestream.writerequest.binaryread(request.totalbytes)
opfilestream.position = 0
requestbindate = opfilestream.read
iformend = opfilestream.size
bcrlf = chrb(13)&chrb(10)
'GetSeperators
sstart = midb(requestbindate、1、instrb(1、requestbindate、bcrlf)-1)
istart = lenb(sstart)
iformstart = istart+2
'splitItems
する
iinfoend = instrb(iformstart、requestbindate、bcrlf&bcrlf)+3
tstream.type = 1
tstream.mode = 3
tstream.open
opfilestream.position = iformstart
opfilestream.copytottream、iinfoend-wiformstart
tstream.position = 0
tstream.type = 2
tstream.charset = "utf-8"
sinfo = tstream.readText
'getformitemname
iformstart = instrb(iinfoend、requestbindate、sstart)-1
ifindstart = strunt(22、sinfo、 "name =" ""、1)+6
ifindend = strunt(ifindstart、sinfo、 "" "、1)
sformname = Mid(sinfo、ifindstart、ifindend-ifindstart)
'ifit'safile
ifinstr(45、sinfo、 "filename =" ""、1)> 0then
setofileInfo = newFileInfo
'getFileAttributes
ifindstart = strunt(ifindend、sinfo、 "filename =" ""、1)+10
ifindend = strunt(ifindstart、sinfo、 "" "、1)
sfileName = Mid(sinfo、ifindstart、ifindend-ifindstart)
ofileinfo.filename = mid(sfilename、instrrev(sfilename、 "/")+1)
ofileinfo.filepath = left(sfilename、instrrev(sfilename、 "/"))
ofileinfo.fileext = mid(sfilename、instrrev(sfilename、 "。")+1)
ifindstart = strunt(ifindend、sinfo、 "content-type:"、1)+14
ifindend = strums(ifindstart、sinfo、vbcr)
ofileinfo.filetype = mid(sinfo、ifindstart、ifindend-ifindstart)
ofileinfo.filestart = iinfoend
ofileinfo.filesize = iformstart-iinfoend-2
ofileinfo.formname = sformname
file.addsformname、ofileinfo
それ以外
'ifitsformitem
tstream.close
tstream.type = 1
tstream.mode = 3
tstream.open
opfilestream.position = iinfoend
opfilestream.copytottream、iformstart-iinfoend-2
tstream.position = 0
tstream.type = 2
tstream.charset = "utf-8"
SFORMVALUE = TSTREAM.READTEXT
ifform.exists(sformname)then
form(sformname)= form(sformname)& "、"&sformvalue
それ以外
form.addsformname、sformvalue
endif
endif
tstream.close
iformstart = iformstart+istart+2
'exitateNdoffile
loopuntil(iformstart+2)= iformend
requestbindate = ""
SETTSTREAM = Nothing
Endingub
エンドクラス
'getfileinfo
classfileinfo
dimformname、filename、filepath、filesize、filetype、filestart、fileext
privatesubclass_initialize
filename = ""
filepath = ""
filesize = 0
filestart = 0
formname = ""
filetype = ""
fileext = ""
Endingub
'SaveFileMethod
publicfunctionsavetofile(fullpath)
dimofilestream、エラーチャール、i
onerrorresumenext
setofilestream = createObject( "adodb.stream")
ofilestream.type = 1
ofilestream.mode = 3
ofilestream.open
opfilestream.position = filestart
opfilestream.copytoofilestream、filesize
ofilestream.savetofilefullpath、2
ofilestream.close
setofilestream =何もない
エンド機能
'getFileContent
publicFunctionGetDate
opfilestream.position = filestart
getDate = opfilestream.read(filesize)
エンド機能
エンドクラス
%>
コア関数
コードコピーは次のとおりです。
dimtheinstalledObjects(17)
theinstalledObjects(0)= "Mswc.adrotator"
theInstalledObjects(1)= "mswc.browsertype"
theinstalledObjects(2)= "mswc.nextlink"
theinstalledObjects(3)= "mswc.tools"
theinstalledObjects(4)= "mswc.status"
theinstalledObjects(5)= "mswc.counters"
theinstalledObjects(6)= "iissample.contentrotator"
theinstalledObjects(7)= "iissample.pagecounter"
theinstalledObjects(8)= "mswc.permisseChecker"
theinstalledObjects(9)= "Scripting.filesystemObject"
theinstalledObjects(10)= "adodb.Connection"
theinstalledObjects(11)= "softartisans.fileup"
theinstalledObjects(12)= "softartisans.filemanager"
theinstalledObjects(13)= "jmail.smtpmail"
theinstalledObjects(14)= "cdonts.newmail"
theinstalledObjects(15)= "persits.mailsender"
theinstalledObjects(16)= "lyfupload.uploadfile"
theinstalledObjects(17)= "persits.upload.1"
dimfso
ifisobjinstalled(theinstalledObjects(9))
setFSO = server.createObject( "Scripting.filesystemObject")
endif
functionisobjinstalled(strclassstring)
onerrorresumenext
isobjinstalled = false
err = 0
dimxtestobj
setxtestobj = server.createobject(strclassstring)
if0 = errthenisobjinstalled = true
setxtestobj =何もない
err = 0
エンド機能
'コンポーネントバージョンを確認してください
publicFunctionGetVer(ClassSTR)
onerrorresumenext
dimxtestobj
setxtestobj = server.createObject(classstr)
iferrthen
getver = ""
それ以外
getver = xtestobj.version
endif
setxtestobj =何もない
エンド機能
'体験名
functionisvalidfilename(file_name)
isValidFileName = false
dimre、拘束
setre = newRegexp
re.ignorecase = true
re.global = true
re.pattern = "[^_/。a-za-z/d]"
strim = re.replace(file_name、 "")
iffile_name = rentthenisvalidfilename = true
setre =何もない
エンド機能
'ファイルライティング
functionwriteto(xmlfloder、xmlfile、content、モード)
writeto = false
ifnotisobjinstalled(theinstalledObjects(9))thenexitfunction
モード= killint(モード、0,0,2)
xmlfloder = server.mappath(xmlfloder)
setFSO = server.createObject( "Scripting.filesystemObject")
ifnotfso.folderexists(xmlfloder)
fso.createfolder(xmlfloder)
endif
xmlfile = leplage(xmlfloder& "/"、 "//"、 "/")&xmlfile
'Response.Write(warn_red(xmlfile))
dimfsoxml
ifffso.fileexists(xmlfile)andMode = 1then 'は書きません
exitFunction
elseifffso.fileexists(xmlfile)およびmode = 2then'rewrite
setfsoxml = fso.opentextfile(xmlfile、2)
fsoxml.writeline(content)
fsoxml.close
writeto = true
elseifffso.fileexists(xmlfile)およびmode = 8then'add
setfsoxml = fso.opentextfile(xmlfile、8)
fsoxml.writeline(content)
fsoxml.close
writeto = true
elseifffso.fileexists(xmlfile)then
setfsoxml = fso.opentextfile(xmlfile、2) 'write
fsoxml.writeline(content)
fsoxml.close
writeto = true
それ以外
setFSOXML = fso.createTextFile(xmlfile) 'create
fsoxml.writeline(content)
fsoxml.close
writeto = true
endif
エンド機能
'ファイルを削除します
functiondelaspfile(x)
onerrorresumenext
delaspfile = false
ifnotfileexitornot(x)then
exitFunction
それ以外
fso.deletefileserver.mappath(x)
delaspfile = true
endif
エンド機能
'ファイルが存在します
functionfileexitornot(file)
onerrorresumenext
dimf_re_file
f_re_file = true
ifnotfso.fileexists(server.mappath(file))thenf_re_file = false
iferr0thenf_re_file = false
fileexitornot = f_re_file
エンド機能
'エラー抑制、印刷エラー
functionshow_err(err)
onerrorresumenext
iferr.number0then
Response.Clear
dimerr_mess
err_mess = "エラーが発生しました:
エラー番号:「&err.Number&」
エラーメッセージ:「&err.description&」
エラーファイル:「&err.Source&」
エラーライン: "&err.line&"(サポートされていません)
「&err
respons.write(err_mess)
endif
エンド機能
'警告:
functionwarn_red(混乱)
warn_red = " track:"&mess& "
「 =赤>
エンド機能
'FSOファイルディレクトリ
functionshowallfile(path)
'onerrorresumenext
パス=置換(path、 "//"、 "/")
setFSO = createObject( "Scripting.filesystemObject")
dimuploadpath、uploadfolder、objsubfolders、allfiles、fileitem、objsubfolder、
sfilename
ifinstr(1、path、 ":/")= 0then
パス=置換(path、 "/"、 "/")
uploadpath = server.mappath(path)
それ以外
パス=置換(path、 "/"、 "/")
uploadpath = path
endif
Response.write(warn_red(uploadpath))
ifnotfso.folderexists(uploadpath)
respons.writewarn_red( "パスルックアップに失敗した")
exitFunction
endif
setuploadfolder = fso.getFolder(uploadPath)
ifuploadfolder.isrootfolderthen
Response.Write( "ルートディレクトリ
「)
それ以外
Response.write( "親ディレクトリ:
「&uploadfolder.parentfolder&」
「)
endif
Response.write( "ディレクトリサイズ:"&int(uploadfolder.size/1024)& "kb
「)
setobjsubfolders = uploadfolder.subfolders
dimfso_mes
fso_mes = "
foreachobjsubfolderinobjsubfolders
fso_mes = fso_mes& "
次
setallfiles = uploadfolder.files
foreachfileiteminallfiles
fso_mes = fso_mes& "
次
fso_mes = fso_mes& "
「
respons.write(fso_mes)
respons.writedeltext(uploadpath、1)
エンド機能
'ファイルプロパティ
functionfilepro(name)
名前=置き換え(name、 "//"、 "/")
どちらのファイルを薄くしますか
ifinstr(1、name、 ":/")= 0then
名前=置き換え(name、 "/"、 "/")
whithfile = server.mappath(name)
それ以外
名前=置き換え(name、 "/"、 "/")
whichfile = name
endif
setFSO = createObject( "Scripting.filesystemObject")
ifnotfso.fileexists(どちらのファイル)
Response.write(warn_red( "ファイルが存在しないか、アクセス許可がない"))
exitFunction
endif
dimf2、s_mess
setf2 = fso.getfile(whithfile)
s_mess = "親ディレクトリ:"&f2.parentfolder&
「
「
s_mess = s_mess& "file name:"&f2.name& "
「
s_mess = s_mess& "ファイルショートパス名:"&f2.shortpath& "
「
s_mess = s_mess& "ファイル物理アドレス:"&f2.path& "
「
s_mess = s_mess& "file属性:"&f2.attributes& "
「
s_mess = s_mess& "ファイルサイズ:"&f2.size& "
「
s_mess = s_mess& "ファイルタイプ:"&f2.type& "
「
s_mess = s_mess& "ファイル作成時間:"&f2.datecreated& "
「
s_mess = s_mess& "最新のアクセス時間:"&f2.datelastaccessed& "
「
s_mess = s_mess& "最新の変更時間:"&f2.datelastModified& "
「
respons.write(s_mess)
ifkillint(trim(request( "type"))、0,0,2)0then
showtext(どちらのファイル)
endif
respons.writedeltext(file、0)
エンド機能
'
SubshowText(ファイル)
Dimistr、Adostext、Strap
setadostext = server.createObject( "adodb.stream")
adostext.mode = 3
adostext.type = 2
adostext.charset = "gb2312"
'adostext.charset = "big5"
adostext.open
ifinstr(1、files、 ":/")= 0then
files = lepplec(files、 "/"、 "/")
files = server.mappath(files)
それ以外
files = lepplec(files、 "/"、 "/")
files = files
endif
adostext.loadfromfile(files)
strasp = adostext.readtext()
adostext.close
SetAdostext = Nothing%>
functiondelText(ファイル、モード)
dimdeltext_mess
deltext_mess = ""
SelectCaseKillint(モード、0,0,2)
case0:
deltext_mess = deltext_mess& "ファイル操作:プロパティ編集モバイルコピーの名前変更delete " =赤> =赤>
case1:
deltext_mess = deltext_mess& "フォルダー操作:リスト作成ディレクトリマニュアルファイルアップロードファイルの動きコピーの名前を変更して削除" =赤>
EndSelect
deltext_mess = deltext_mess& ""
deltext = deltext_mess
エンド機能
上記は、ファイルシステムを操作するFSOに関する詳細なチュートリアルです。あなたはそれを学んだと思います。関連するコンテンツについては、引き続きWuxin Technologyチャネルに注意を払います。