<% '===============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上传漏洞 "\0" 防范
'函数名: 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
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(sFileExt,strExt,blnAllow)
dim arrExt,return
'= 禁止上传的文件列表
'strExt = "EXE|JS|BAT|HTML|HTM|COM|ASP|ASA|DLL|PHP|JSP|CGI"
sFileExt = UCase(sFileExt)
strExt = UCase(strExt)
arrExt = split(strExt,"|")
If blnAllow=true then '只允许上传指定的文件
return = false
for i=0 to UBound(arrExt)
If sFileExt=arrExt(i) then return=true
next
'response.write "Ext: "&sFileExt & " return: " & return & " "
else '禁止上传指定的文件
return = true
for i=0 to UBound(arrExt)
If sFileExt=arrExt(i) then return=false
next
End If
CheckFileExt = return
End Function
'*******************************************************
'作 用: 格式化显示文件大小
'FileSize: 文件大小
'*******************************************************
Function FormatSize(FileSize)
If FileSize<1024 then FormatSize = FileSize & " Byte"
If FileSize/1024 <1024 And FileSize/1024 > 1 then
FileSize = FileSize/1024
FormatSize=round(FileSize*100)/100 & " KB"
Elseif FileSize/(1024*1024) > 1 Then
FileSize = FileSize/(1024*1024)
FormatSize = round(FileSize*100)/100 & " MB"
End If
End function
'*******************************************************
'作用:下载文件。
'函数名: DownFile(FileName)
' FileName
'*******************************************************
Sub DownFile(FileName)
fname = server.MapPath(fname)
filename=split(fname,"\")
Set objAdoStream=Server.createObject("ADODB.Stream")
objAdoStream.Type=1
objAdoStream.open()
objAdoStream.LoadFromFile(fname)
strchar=objAdoStream.Read()
fsize=objAdoStream.size
objAdoStream.Close()
Set objAdoStream=nothing
Response.AddHeader "content-type","application/x-msdownload"
response.AddHeader "Content-Disposition","attachment;filename=" & filename(ubound(filename))
Response.AddHeader "content-length", fsize
Response.BinaryWrite(strchar)
Response.Flush()
End Sub
'====================================================================================================
'读取INI文件
Function ReadIni(FilePath_Name,MySession,MyItem)
Dim MyString, MyArray,str_temp,sesstion_temp
MyString=LoadFile(FilePath_Name)
Arr=split(MyString,chr(10))
For I = 0 to UBound(Arr)
Str_temp= Arr(I)
Str_temp=Replace(Trim(Str_temp),chr(13),"")
If Trim(Str_temp)<>"" and InStr(Trim(Str_temp),";")<>1 Then
If InStr(Trim(Str_temp),"[")<InStr(Trim(Str_temp),"]") Then
sesstion_temp=Trim(Str_temp)
sesstion_temp=Replace(Trim(sesstion_temp),"[","")
sesstion_temp=Replace(Trim(sesstion_temp),"]","")
Else
MyArray = Split(Trim(Str_temp), "=")
If Trim(MyArray(0))=MyItem and sesstion_temp=MySession then
ReadIni= Trim(MyArray(1))
Exit Function
End if
End If
End if
Next
ReadIni=""
End Function
'写入INI文件
Function WriteIni(FilePath_Name,MySession,MyItem,MyValue)
Dim MyString, MyArray,str_temp,sesstion_temp,sesstion_temp2,Rstr
IsDo=false
IsHave=false
MyString=LoadFile(FilePath_Name)
Arr=split(MyString,chr(10))
For I = 0 to UBound(Arr)
Str_temp= Arr(I)
Str_temp=Replace(Trim(Str_temp),chr(13),"")
if not IsDo then
If Trim(Str_temp)<>"" and InStr(Trim(Str_temp),";")<>1 Then
If InStr(Trim(Str_temp),"[")<InStr(Trim(Str_temp),"]") Then
sesstion_temp=Trim(Str_temp)
sesstion_temp=Replace(Trim(sesstion_temp),"[","")
sesstion_temp=Replace(Trim(sesstion_temp),"]","")
if sesstion_temp<>sesstion_temp2 and IsHave then
Str_temp=MyItem&"="&MyValue&VbCrLf&Str_temp
IsDo=true
end if
sesstion_temp2=sesstion_temp
if sesstion_temp=MySession then IsHave=true
Else
MyArray = Split(Trim(Str_temp), "=")
If Trim(MyArray(0))=MyItem and sesstion_temp=MySession then
Str_temp= MyItem&"="&MyValue
IsDo=true
End if
End If
End if
End if
if(I<>UBound(Arr)) then
if Str_temp<>"" then Rstr=Rstr&Str_temp&VbCrLf
else
if Str_temp<>"" then Rstr=Rstr&Str_temp
end if
Next
if IsHave and IsDo=false then Rstr=Rstr&VbCrLf&MyItem&"="&MyValue
if IsHave=false and IsDo=false then Rstr=Rstr&VbCrLf&"["&MySession&"]"&VbCrLf&MyItem&"="&MyValue
call SaveToFile(Rstr,FilePath_Name)
End Function
'======================================================================================================
Function GetRanNum()
'****************************************
'函数名:GetRanNum
'作 用:输出带日期格式的随机数
'参 数:无 ----
'返回值:如GetRanNum(),即输出200409071553464617,为2004年09月07日15时53分46秒4617随机数
'关联函数:FormatIntNumber
'****************************************
GetRanNum = ""
GetRanNum = GetRanNum&FormatIntNumber(year(now),4)
GetRanNum = GetRanNum&FormatIntNumber(month(now),2)
GetRanNum = GetRanNum&FormatIntNumber(day(now),2)
GetRanNum = GetRanNum&FormatIntNumber(hour(now),2)
GetRanNum = GetRanNum&FormatIntNumber(minute(now),2)
GetRanNum = GetRanNum&FormatIntNumber(second(now),2)
randomize
ranNum=int((9000*rnd)+1000)
GetRanNum = GetRanNum&ranNum
End Function
Function FormatIntNumber(Expression,Digit)
'****************************************
'函数名:FormatIntNumber
'作 用:输出Digit位左边带0整数
'参 数:Expression ----要格式化整数
'参 数:Digit ----要格式化位数
'返回值:如0005,如FormatIntNumber(5,4),整数5被格式化为0005
'关联函数:无
'****************************************
While Len(Expression) < Digit
Expression = "0"&Expression
wend
FormatIntNumber = Expression
End Function
%>
分享到:
相关推荐
### ASP.NET 函数集详解 #### 一、时间函数 在 ASP.NET 开发过程中,时间函数是必不可少的一部分,它们能够帮助我们处理与日期和时间相关的各种需求。 ##### 1. 获取当前时间 - **语法**: `System.DateTime ...
总之,ASP自带的函数集强大且实用,结合自定义函数,开发者可以构建出功能丰富的动态网页应用。而`ASP函数.CHM`这样的资源,则是学习和工作中不可或缺的工具,帮助开发者快速解决问题,提升编程技能。
以下是对给定文件中的几个自定义函数的详细解析,这些函数覆盖了字符串处理、数组操作以及SQL构建等方面。 #### 1. `getReplace(Str)` 该函数用于移除字符串中的括号。 - **参数**: `Str` - 输入的字符串。 - **...
### ASP常用函数集 #### 数据库操作相关 1. **OpenDB(vdata_url)**:该函数用于打开指定路径下的数据库连接。参数`vdata_url`为数据库的路径。此函数对于后续进行数据库操作至关重要,例如查询、更新数据等。 2....
9. **文件操作函数**: - `FileUpload.SaveAs`:上传文件并保存到服务器。 - `Server.MapPath`:将虚拟路径转换为实际文件系统路径。 10. **错误处理与日志记录函数**: - `Application_Error`:全局错误事件,...
在提供的文件`pageCute.asp`中,可能就包含了一个这样的分页函数。这个函数可能封装了上述所有步骤,使用时只需要传入必要的参数(如总条数、每页条数、当前页码等),它就能自动完成分页逻辑,并返回HTML代码用于在...
3. **数组操作函数**:在ASP中,数组处理有时较为复杂,自定义函数库可能包含了数组创建、遍历、排序或合并等功能,如`Array()`, `Ubound()`, `Lbound()`等。 4. **文件系统对象函数**:通过File System Object...
在描述中提到的“asp-hmac-md5加密方法-md5函数文件-支持中文”表明这个压缩包可能包含了实现上述过程的ASP函数文件,这些函数文件可能是用VBScript编写的,并且已经处理了中文字符集的问题。在处理中文字符时,需要...
'天枫ASP class v1.0鱼鱼修改版,集常用asp函数于一体 '天枫版权所有http://www.52515.net 'QQ:76994859 EMAIL:Chenshaobo@gmail.com '所有功能函数名如下: '-------------------------...
比如,MD5(Message-Digest Algorithm 5)是一个常见的哈希函数,在`Md5.asp`文件中可能包含了MD5加密的示例代码。MD5常用于存储密码时,将其转化为不可逆的哈希值,提高安全性。例如,`Function MD5Hash(strInput) ...
以下是一些常见的函数集,这些函数在处理数据和控制程序流程时扮演着重要角色: 1. **Abs(number)**:这个函数返回一个数值的绝对值,对于处理负数特别有用,确保结果总是正数。 2. **Asc(String)**:该函数返回...
以下是从给定的文件信息中提炼出的27个常用函数集的详细解析,这些函数覆盖了日期时间操作、字符串处理、类型转换等多个方面,对于编程爱好者及专业开发者来说,都是不可或缺的知识点。 ### 1. DateTime类 `...
该函数通过Server.CreateObject方法创建了一个ADODB.Stream对象,用于执行后续的文件操作。在初始化Stream对象后,设置其Type属性为2,意味着该对象将操作文本数据。Mode属性设置为3,表示对象以只读模式打开。之后...
以下是对给定文件中的Asp.Net常用函数的详细解析与扩展说明: ### 1. DateTime类 `DateTime`类是处理日期和时间的强大工具。通过`System.DateTime.Now`可以获取当前的系统时间。进一步地,可以通过`.Year`, `....
这个"asp.net常用函数表"文档集可能是为了帮助开发者更有效地理解和使用ASP.NET中的核心函数,从而提高开发效率。以下是一些可能涵盖在该文档集合中的关键知识点: 1. **Response对象**: - `Response.Write()`:...