• <strike id="ygw0y"></strike>
    <strike id="ygw0y"><s id="ygw0y"></s></strike>
  • 在ASP中模擬form上傳文件(以multipart/form-data編碼)
    作者:佚名  文章來源:本站原創(chuàng)
    <%
    Public Const adTypeBinary = 1
    Public Const adTypeText = 2
    Public Const adLongVarBinary = 205
    
    '字節(jié)數(shù)組轉(zhuǎn)指定字符集的字符串
    Public Function BytesToString(vtData, ByVal strCharset)
        Dim objFile
        Set objFile = Server.CreateObject("ADODB.Stream")
        objFile.Type = adTypeBinary
        objFile.Open
        If VarType(vtData) = vbString Then
            objFile.Write BinaryToBytes(vtData)
        Else
            objFile.Write vtData
        End If
        objFile.Position = 0
        objFile.Type = adTypeText
        objFile.Charset = strCharset
        BytesToString = objFile.ReadText(-1)
        objFile.Close
        Set objFile = Nothing
    End Function
    
    '字節(jié)字符串轉(zhuǎn)字節(jié)數(shù)組,即經(jīng)過MidB/LeftB/RightB/ChrB等處理過的字符串
    Public Function BinaryToBytes(vtData)
        Dim rs
        Dim lSize
        lSize = LenB(vtData)
        Set rs = Server.CreateObject("ADODB.RecordSet")
        rs.Fields.Append "Content", adLongVarBinary, lSize
        rs.Open
        rs.AddNew
        rs("Content").AppendChunk vtData
        rs.Update
        BinaryToBytes = rs("Content").GetChunk(lSize)
        rs.Close
        Set rs = Nothing
    End Function
    
    '指定字符集的字符串轉(zhuǎn)字節(jié)數(shù)組
    Public Function StringToBytes(ByVal strData, ByVal strCharset)
        Dim objFile
        Set objFile = Server.CreateObject("ADODB.Stream")
        objFile.Type = adTypeText
        objFile.Charset = strCharset
        objFile.Open
        objFile.WriteText strData
        objFile.Position = 0
        objFile.Type = adTypeBinary
        If UCase(strCharset) = "UNICODE" Then
            objFile.Position = 2 'delete UNICODE BOM
        ElseIf UCase(strCharset) = "UTF-8" Then
            objFile.Position = 3 'delete UTF-8 BOM
        End If
        StringToBytes = objFile.Read(-1)
        objFile.Close
        Set objFile = Nothing
    End Function
    
    '獲取文件內(nèi)容的字節(jié)數(shù)組
    Public Function GetFileBinary(ByVal strPath)
        Dim objFile
        Set objFile = Server.CreateObject("ADODB.Stream")
        objFile.Type = adTypeBinary
        objFile.Open
        objFile.LoadFromFile strPath
        GetFileBinary = objFile.Read(-1)
        objFile.Close
        Set objFile = Nothing
    End Function
    
    'XML Upload Class
    Class XMLUploadImpl
    Private xmlHttp
    Private objTemp
    Private strCharset, strBoundary
    
    Private Sub Class_Initialize()
        Set xmlHttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
        Set objTemp = Server.CreateObject("ADODB.Stream")
        objTemp.Type = adTypeBinary
        objTemp.Open
        strCharset = "GBK"
        strBoundary = GetBoundary()
    End Sub
    
    Private Sub Class_Terminate()
        objTemp.Close
        Set objTemp = Nothing
        Set xmlHttp = Nothing
    End Sub
    
    '獲取自定義的表單數(shù)據(jù)分界線
    Private Function GetBoundary()
        Dim ret(24)
        Dim table
        Dim i
        table = "ABCDEFGHIJKLMNOPQRSTUVWXZYabcdefghijklmnopqrstuvwxzy0123456789"
        Randomize
        For i = 0 To UBound(ret)
            ret(i) = Mid(table, Int(Rnd() * Len(table) + 1), 1)
        Next
        GetBoundary = "__NextPart__ " & Join(ret, Empty)
    End Function 
    
    '設(shè)置上傳使用的字符集
    Public Property Let Charset(ByVal strValue)
        strCharset = strValue
    End Property
    
    '添加文本域的名稱和值
    Public Sub AddForm(ByVal strName, ByVal strValue)
        Dim tmp
        tmp = "\r\n--$1\r\nContent-Disposition: form-data; name=""$2""\r\n\r\n$3"
        tmp = Replace(tmp, "\r\n", vbCrLf)
        tmp = Replace(tmp, "$1", strBoundary)
        tmp = Replace(tmp, "$2", strName)
        tmp = Replace(tmp, "$3", strValue)
        objTemp.Write StringToBytes(tmp, strCharset)
    End Sub
    
    '設(shè)置文件域的名稱/文件名稱/文件MIME類型/文件路徑或文件字節(jié)數(shù)組
    Public Sub AddFile(ByVal strName, ByVal strFileName, ByVal strFileType, vtValue)
        Dim tmp
        tmp = "\r\n--$1\r\nContent-Disposition: form-data; name=""$2""; filename=""$3""\r\nContent-Type: $4\r\n\r\n"
        tmp = Replace(tmp, "\r\n", vbCrLf)
        tmp = Replace(tmp, "$1", strBoundary)
        tmp = Replace(tmp, "$2", strName)
        tmp = Replace(tmp, "$3", strFileName)
        tmp = Replace(tmp, "$4", strFileType)
        objTemp.Write StringToBytes(tmp, strCharset)
        If VarType(vtValue) = (vbByte Or vbArray) Then
            objTemp.Write vtValue
        Else
            objTemp.Write GetFileBinary(vtValue)
        End If
    End Sub
    
    '設(shè)置multipart/form-data結(jié)束標記
    Private Sub AddEnd()
        Dim tmp
        'tmp = Replace("\r\n--$1--\r\n", "$1", strBoundary)
            tmp = "\r\n--$1--\r\n" 
            tmp = Replace(tmp, "\r\n", vbCrLf) 
            tmp = Replace(tmp, "$1", strBoundary)
        objTemp.Write StringToBytes(tmp, strCharset)
        objTemp.Position = 2
    End Sub
    
    '上傳到指定的URL,并返回服務器應答
    Public Function Upload(ByVal strURL)
        Call AddEnd
        xmlHttp.Open "POST", strURL, False
        xmlHttp.setRequestHeader "Content-Type", "multipart/form-data"
        xmlHttp.setRequestHeader "Content-Length", objTemp.size
        xmlHttp.Send objTemp
            If VarType(xmlHttp.responseBody) = (vbByte Or vbArray) Then 
                Upload = BytesToString(xmlHttp.responseBody, strCharset) 
            End If
    End Function
    End Class
    %>
    在包含該文件后用以下代碼調(diào)用
    VB code
    Dim UploadData
    Set UploadData = New XMLUploadImpl
    UploadData.Charset = "gb2312"
    UploadData.AddForm "Test", "123456" '文本域的名稱和內(nèi)容
    UploadData.AddFile "ImgFile", "F:\test.jpg", "image/jpg", GetFileBinary("F:\test.jpg")'圖片或者其它文件
    Response.Write UploadData.Upload("http://localhost/receive.asp") 'receive.asp為接收頁面
    Set UploadData = Nothing
    


    本文地址:http://www.qingqingav.com/news/n08/201203/6925.html,如要轉(zhuǎn)載,請注明轉(zhuǎn)載自5A農(nóng)業(yè)人才網(wǎng)
    主站蜘蛛池模板: 东京热av人妻无码专区| 免费无码午夜福利片69| 国产羞羞的视频在线观看 国产一级无码视频在线 | 免费无码又爽又黄又刺激网站| 亚洲国产精品无码久久九九 | 中文字幕丰满乱子无码视频| 亚洲av无码国产精品夜色午夜| 亚洲AV无码男人的天堂| 变态SM天堂无码专区| 亚洲精品无码人妻无码| 亚洲AV日韩AV高潮无码专区| 精品久久久无码中文字幕| 亚洲熟妇无码一区二区三区导航 | 无码专区HEYZO色欲AV| 久久老子午夜精品无码怎么打| 青青爽无码视频在线观看| 一本一道AV无码中文字幕| 国产精品无码一本二本三本色| 亚洲中文无码a∨在线观看| 日韩va中文字幕无码电影| 性色av无码不卡中文字幕| 永久免费av无码网站韩国毛片| 日韩精品无码免费专区午夜| 亚洲成av人片不卡无码久久| 色欲aⅴ亚洲情无码AV蜜桃| 日韩精品中文字幕无码一区| 亚洲va无码专区国产乱码| 在线观看免费无码视频| 亚洲成a人无码av波多野按摩| 少妇无码AV无码专区线| 亚洲中文无码线在线观看| 国产aⅴ无码专区亚洲av麻豆| 国产成人无码精品一区不卡| 成人无码区免费视频观看| 亚洲av成本人无码网站| 无码中文字幕av免费放| 久久精品无码一区二区三区不卡 | 亚洲一区精品无码| 亚洲日韩精品无码专区网址 | 亚洲AV无码专区国产乱码不卡| 少妇人妻无码精品视频app|