国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > VBScript > 正文

VBS模擬POST上傳文件的代碼

2020-06-26 18:25:36
字體:
來源:轉載
供稿:網友
改寫自CSDN上的一個ASP中模擬form上傳文件,即(multipart/form-data)的表單的程序,原程序有些地方寫錯了。
 
復制代碼代碼如下:

'XML Upload Class 
Class XMLUpload 
Private xmlHttp 
Private objTemp 
Private adTypeBinary, adTypeText 
Private strCharset, strBoundary 

Private Sub Class_Initialize() 
adTypeBinary = 1 
adTypeText = 2 
Set xmlHttp = CreateObject("Msxml2.XMLHTTP") 
Set objTemp = CreateObject("ADODB.Stream") 
objTemp.Type = adTypeBinary 
objTemp.Open 
strCharset = "utf-8" 
strBoundary = GetBoundary() 
End Sub 

Private Sub Class_Terminate() 
objTemp.Close 
Set objTemp = Nothing 
Set xmlHttp = Nothing 
End Sub 

'指定字符集的字符串轉字節數組 
Public Function StringToBytes(ByVal strData, ByVal strCharset) 
Dim objFile 
Set objFile = 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 

'獲取文件內容的字節數組 
Private Function GetFileBinary(ByVal strPath) 
Dim objFile 
Set objFile = CreateObject("ADODB.Stream") 
objFile.Type = adTypeBinary 
objFile.Open 
objFile.LoadFromFile strPath 
GetFileBinary = objFile.Read(-1) 
objFile.Close 
Set objFile = Nothing 
End Function 

'獲取自定義的表單數據分界線 
Private Function GetBoundary() 
Dim ret(12) 
Dim table 
Dim i 
table = "abcdefghijklmnopqrstuvwxzy0123456789" 
Randomize 
For i = 0 To UBound(ret) 
ret(i) = Mid(table, Int(Rnd() * Len(table) + 1), 1) 
Next 
GetBoundary = "---------------------------" & Join(ret, Empty) 
End Function 

'設置上傳使用的字符集 
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 

'設置文件域的名稱/文件名稱/文件MIME類型/文件路徑或文件字節數組 
Public Sub AddFile(ByVal strName, ByVal strFileName, ByVal strFileType, ByVal strFilePath) 
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) 
objTemp.Write GetFileBinary(strFilePath) 
End Sub 

'設置multipart/form-data結束標記 
Private Sub AddEnd() 
Dim tmp 
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; boundary=" & strBoundary 
'xmlHttp.setRequestHeader "Content-Length", objTemp.size 
xmlHttp.Send objTemp 
Upload = xmlHttp.responseText 
End Function 
End Class 

Dim UploadData 
Set UploadData = New XMLUpload 
UploadData.Charset = "utf-8" 
UploadData.AddForm "content", "Hello world" '文本域的名稱和內容 
UploadData.AddFile "file", "test.jpg", "image/jpg", "test.jpg" 
WScript.Echo UploadData.Upload("http://example.com/takeupload.php") 
Set UploadData = Nothing

原文:http://demon.tw/programming/vbs-post-file.html

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 格尔木市| 宁阳县| 和政县| 玉田县| 阳城县| 富平县| 叶城县| 中牟县| 甘肃省| 霸州市| 建阳市| 罗山县| 阳信县| 安丘市| 鹤壁市| 绥宁县| 安岳县| 温宿县| 泾阳县| 凤阳县| 临沭县| 杭锦旗| 象州县| 山西省| 荣成市| 蒙城县| 南丹县| 蛟河市| 宿州市| 鹿泉市| 保定市| 磐安县| 卓资县| 安岳县| 平遥县| 嘉定区| 莱西市| 永州市| 柳州市| 施秉县| 青铜峡市|