`
cyqplay
  • 浏览: 95879 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

一些常用的ASP文件操作函数(二)

阅读更多

ASP文件相关的一些函数。有以下几个:
1. 得到文件扩展名
2. ASP上传文件漏洞检测
3. 格式化显示文件大小
4. asp检测上传图片是否为真实图片
5. 上传文件扩展名检测
6. 取得文件对应的图标
7. 下载文件等相关函数

程序代码 程序代码

<%    
    '*******************************************************
    '作  用: 得到文件扩展名
    '函数名: GetFileExt(fileTrue)
    '参  数: sFileName 文件名
    '返回值: 返回文件扩展名
    '*******************************************************
    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
    
    
    '*******************************************************
    '作  用: 取得文件对应的图标
    '函数名: FormatSize(FileSize)
    '参  数: FileName 文件名
    '返回值: 合法文件返回 True ,否则返回False
    '*******************************************************
    Function GetFileIcon(FileName)
        dim FileExt,Fso1
        FileExt = GetFileExt(FileName)
        ImgPath= strAdminRoot &  "Style/images/file/" & FileExt & ".gif"
        Set Fso1 = Server.CreateObject("Scripting.FileSystemObject")
        If Fso1.fileExists(server.MapPath(ImgPath))=true then
            GetFileIcon= "<img src=""" & ImgPath & """>"
        else
            GetFileIcon= "<img src=""" & strAdminRoot & "Style/images/file/unknow.gif" & """>"
        End If
        Set Fso1=nothing
    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
%>
--------------------------------
分享到:
评论

相关推荐

    ASP文件操作函数

    综上所述,ASP文件操作函数为开发者提供了一套强大且灵活的工具,使得在服务器端处理文件变得简单高效。通过熟练掌握这些函数,可以轻松地实现读取、写入、修改和生成文件的功能,提升Web应用程序的性能和用户体验。...

    ASP技术常遇问题解答-常用的文件操作函数有哪些?.zip

    下面,我们将详细探讨ASP中常用的文件操作函数。 1. **FileOpen**: 这个函数用于打开一个文件,它需要一个文件路径和一个打开模式(如读、写或追加)。例如,`FileOpen("path", 1)`会以只读方式打开指定路径的文件...

    asp常用函数大全 学习asp必备

    对于学习ASP并希望深入掌握其功能的开发者而言,了解并熟练运用ASP中的常用函数是至关重要的。根据给定文件的信息,我们可以提炼出一系列与ASP相关的知识点,涵盖数据库操作、用户信息获取、字符串处理、日期时间...

    asp 读取文件和保存文件函数代码

    ### ASP读取与保存文件函数解析 #### 一、ASP技术背景 Active Server Pages (ASP) 是一种服务器端脚本环境,在...以上两个函数为ASP中常见的文件读写操作提供了较为完整的解决方案,能够满足大多数应用场景的需求。

    asp常用函数集合

    以下是对给定文件中的几个自定义函数的详细解析,这些函数覆盖了字符串处理、数组操作以及SQL构建等方面。 #### 1. `getReplace(Str)` 该函数用于移除字符串中的括号。 - **参数**: `Str` - 输入的字符串。 - **...

    asp.net常用函数

    以下是一些 ASP.NET 常用的函数,以及它们的功能和用法: 1. `Abs(number)`:此函数返回输入数值的绝对值,无论该数值是正还是负。 2. `Asc(String)`:这个函数返回给定字符串的第一个字符的 ASCII 码,用于在字符...

    asp vbscript 常用函数大全

    从给定的部分内容来看,这段文本似乎是在讨论如何使用ASP ...然而,为了更全面地掌握ASP VBScript,了解其内置的字符串处理、数组操作、文件系统访问等常用函数也是十分必要的,这些将在其他资源和文档中进一步探讨。

    asp常用的加密函数

    AESCLS.asp文件可能包含一个自定义的ASP类,用于执行AES加密和解密操作。AES的核心是基于替换和置换的混合操作,它允许在不同密钥下对数据进行多次加密,提供强大的安全性。在ASP中使用AES,你需要导入相应的库,...

    ASP常用函数小手册

    以下是对给定文件中提及的一些常用ASP函数的详细解释: 1. **Array()** 函数: - `Array()` 用于创建一个数组,可以包含字符或数字。在提供的代码范例中,`Dim User=Array("张三","李四","王五")` 创建了一个包含3...

    ASP函数大全asp内置函数

    ### ASP函数大全:深入解析与应用 #### 一、Array() `Array()`是ASP中用于...以上是ASP中常用的几个内置函数及其详细解析,它们在处理数据和日期时非常有用,掌握了这些函数,可以大大提高开发效率和代码的可读性。

    ASP.NET常用函数

    #### 二、字符串操作函数 **1. Asc(String)** - **功能**: 返回字符串第一个字符的 ASCII 码。 - **参数**: `String` 表示一个字符串。 - **示例**: `Asc("Hello")` 将返回 `72`。 **2. Chr(charcode)** - **功能*...

    asp 一些的常用函数

    以上只是ASP中常用函数的一部分,实际开发中还有更多如数据处理、文件操作、URL编码等函数。了解并熟练运用这些函数,能大大提高ASP开发的效率和安全性。希望这些分享能对你在ASP开发过程中有所帮助。

    ASP常用函数库(非系统函数)

    3. **数组操作函数**:在ASP中,数组处理有时较为复杂,自定义函数库可能包含了数组创建、遍历、排序或合并等功能,如`Array()`, `Ubound()`, `Lbound()`等。 4. **文件系统对象函数**:通过File System Object...

    检测ASP图片木马的函数

    检测ASP图片木马的函数使用FSO(File System Object)来读取客户端文件的内容,并检查文件内容中是否包含有危险的操作字符。如果文件内容包含有恶意代码,函数将返回True,否则返回False。 函数实现 下面是检测ASP...

    ASP.NET常用函数汇总

    以上列举的函数仅是ASP.NET中众多内置函数的一部分,它们在不同的场景下发挥着重要作用,无论是数据处理、格式化、文件操作还是数学计算,都提供了强大的支持。掌握这些函数的使用方法,将极大地提高ASP.NET开发者的...

    asp.net常用函数表

    文件操作也是常见的需求,ASP.NET提供FileUpload控件让用户上传文件,然后通过Server.MapPath获取服务器上的文件路径,再配合System.IO命名空间的File类进行读写操作。 最后,错误处理和日志记录是提升应用健壮性的...

    WEB设计的常用函数

    这里我们将深入探讨一些常用的WEB设计函数,主要关注ASP.NET中的函数以及与数据处理相关的函数。 首先,ASP.NET是微软开发的一个用于构建Web应用程序的框架,它提供了丰富的内置函数和类库,使得开发者能够高效地...

    ASP函数大全 asp自带函数以及用户创建函数

    #### 字符串操作函数 1. `Chr(charCode)`: 返回指定ASCII码对应的字符。 2. `Left(string, length)`: 从字符串左边截取指定长度的子串。 3. `Mid(string, start, [length])`: 从字符串指定位置开始截取子串。 4. `...

Global site tag (gtag.js) - Google Analytics