萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> asp編程 >> Asp文件操作函數集

Asp文件操作函數集

 <% '===============asp 文件操作函數集1.0版本========================= 

'   整理作者: 張輝 
'   程序員代號:WJ008 
'   整理時間:2008年 6 月 1 日 
'   關注地址:www.wj008.net 
'   所有函數使用的文件地址 全部使用絕對地址 
'==================================================================== 
'LoadFile(ByVal File) 加載已經有的文件,並把文件的內容生成一個字符串返回 
'SaveToFile(ByVal strBody,ByVal File) 把更改的文件保存,strBody為新的字符串 
'DelFile(ByVal File)   刪除已有的文件 
'加載已經有的文件,File為文件路徑 
'------------------------------------------------------------------- 
Function LoadFile(ByVal File) 
Dim objStream 
On Error Resume Next 
Set objStream = Server.CreateObject("ADODB.Stream") 
If Err.Number=-2147221005 Then 
Response.Write " 非常遺憾,您的主機不支持ADODB.Stream,不能使用本程序" 
Err.Clear 
Response.End 
End If 
With objStream 
.Type = 2 
.Mode = 3 
.Open 
.LoadFromFile File 
If Err.Number<>0 Then 
Response.Write " 文件"&File&"無法被打開,請檢查是否存在!" 
Err.Clear 
Response.End 
End If 
.Charset = "GB2312" 
.Position = 2 
LoadFile = .ReadText 
.Close 
End With 
Set objStream = Nothing 
End Function 
'------------------------------------------------------------------- 
Function SaveToFile(ByVal strBody,ByVal File) '保存打開的文件,File為保存的文件路徑,strBody為保存的內容 
Dim objStream 
On Error Resume Next 
Set objStream = Server.CreateObject("ADODB.Stream") 
If Err.Number=-2147221005 Then 
Response.Write "<div align='center'>非常遺憾,您的主機不支持ADODB.Stream,不能使用本程序</div>" 
Err.Clear 
Response.End 
End If 
With objStream 
.Type = 2 
.Open 
.Charset = "GB2312" 
.Position = objStream.Size 
.WriteText = strBody 
.SaveToFile File,2 
.Close 
End With 
Set objStream = Nothing 
End Function 
'------------------------------------------------------------------- 
Function DelFile(ByVal File) 
Dim objFilesys 
On Error Resume Next 
Set objFilesys=server.createobject("scripting.filesystemobject") 
If objFilesys.FILEExists(File) then '如果文件存在著刪除它 FILE為文件路徑 
objFilesys.deleteFILE File 
End if 
If Err.Number<>0 Then 
Response.Write " 文件"&File&"無法被刪除,可能文件正在被系統使用中!" 
Err.Clear 
Response.End 
End If 
Set objFilesys=nothing 
End Function

'檢查文件是否存在 
Function CheckFile(sFileName) 
CheckFile=false 
Dim objFilesys 
On Error Resume Next 
Set objFilesys=server.createobject("scripting.filesystemobject") 
If objFilesys.FILEExists(sFileName) then '如果文件存在著刪除它 FILE為文件路徑 
CheckFile=true 
End if 
Set objFilesys=nothing 
End function 
'檢查文件夾是否存在 
Function CheckFolder(Chk_Path) 
set fso = server.createobject("scripting.filesystemobject") 
if fso.FolderExists(Chk_Path)=false then 
CheckFolder=false 
else 
CheckFolder=true 
end if 
End function

'得到文件後綴名 
function GetFileExt(sFileName) 
GetFileExt = UCase(Mid(sFileName,InStrRev (sFileName, ".")+1)) 
End function

'******************************************************* 
'作 用: ASP上傳漏洞 "" 防范 
'函數名: TrueStr(fileTrue) 
'參 數: sFileName 文件名 
'返回值: 合法文件返回 True ,否則返回False 
'******************************************************* 
function IsTrueFileName(sFileName) 
dim str_len,pos 
str_len=len(sFileName) 
pos=Instr(sFileName,chr(0)) 
If pos=0 or pos=str_len then 
IsTrueFileName = true 
else 
IsTrueFileName = false 
End If 
End function 
'******************************************************* 
'作 用: 檢測上傳的圖片文件(jpeg,gif,bmp,png)是否真的為圖片 
'函數名: TrueStr(fileTrue) 
'參 數: sFileName 文件名(此處文件名是文件夾的物理全路徑) 
'返回值: 確實為圖片文件則返回 True ,否則返回False 
'******************************************************* 
Function IsImgFile(sFileName) 
const adTypeBinary=1 
dim return 
dim jpg(1):jpg(0)=CByte(&HFF):jpg(1)=CByte(&HD8) 
dim bmp(1):bmp(0)=CByte(&H42):bmp(1)=CByte(&H4D) 
dim png(3):png(0)=CByte(&H89):png(1)=CByte(&H50):png(2)=CByte(&H4E):png(3)=CByte(&H47)
dim gif(5):gif(0)=CByte(&H47):gif(1)=CByte(&H49):gif(2)=CByte(&H46):gif(3)=CByte(&H39):gif(4)=CByte(&H38):gif(5)=CByte(&H61)

on error resume next

return=false 
dim fstream,fileExt,stamp,i 
'得到文件後綴並轉化為小寫 
FileExt = LCase(GetFileExt(sFileName)) 
'如果文件後綴為 jpg,jpeg,bmp,gif,png 中的任一種 
'則執行真實圖片判斷 
If strInString(FileExt,"jpg|jpeg|bmp|gif|png")=true then 
Set fstream=Server.createobject("ADODB.Stream") 
fstream.Open 
fstream.Type=adTypeBinary 
fstream.LoadFromFile sFileName 
fstream.position=0 
select case LCase(FileExt) 
case "jpg","jpeg" 
stamp=fstream.read(2) 
for i=0 to 1 
If ascB(MidB(stamp,i+1,1))=jpg(i) then return=true else return=false 
next 
'http://www.cncms.com
case "gif" 
stamp=fstream.read(6) 
for i=0 to 5 
If ascB(MidB(stamp,i+1,1))=gif(i) then return=true else return=false 
next 
case "png" 
stamp=fstream.read(4) 
for i=0 to 3 
If ascB(MidB(stamp,i+1,1))=png(i) then return=true else return=false 
next 
case "bmp" 
stamp=fstream.read(2) 
for i=0 to 1 
If ascB(MidB(stamp,i+1,1))=bmp(i) then return=true else return=false 
next 
End select

fstream.Close 
Set fseteam=nothing 
If err.number<>0 then return = false 
else 
return = true 
End If 
IsImgFile = return 
End function 
'******************************************************* 
'作 用: 上傳文件擴展名檢測 
'函數名: CheckFileExt 
'參 數: sFileExt 上傳文件夾的後綴 
'     strExt  允許或禁止上傳文件夾的後綴,多個以"|"分隔 
'     blnAllow 是允許還是禁止上傳 strExt 中指定的後綴 
'返回值: 合法文件返回 True ,否則返回False 
'******************************************************* 
Function CheckFileExt(

copyright © 萬盛學電腦網 all rights reserved