您现在的位置: 万盛学电脑网 >> 程序编程 >> 网络编程 >> asp编程 >> 正文

Asp文件操作函数集

作者:佚名    责任编辑:admin    更新时间:2022-06-22

 <% '===============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(