當前位置:首頁 » 文件管理 » vbpost上傳

vbpost上傳

發布時間: 2022-08-24 06:12:31

① 如何用vb.net上傳post數據給伺服器

圖有點模糊。
伺服器端要有方法接收,接收的參數要看方法的定義。
Controller A裡面假設有這個get Action
<httppost>
function get(frm as formcollection) as actionresult
dim a as string=frm("keyword")
return content(a)

end function

頁面View 中
@Using FormBegin("get","A","POST")
@<div>
<input name="keyword" type="text"/>
<Input type="submit" value="提交"/>
end using

你在頁面上點擊按鈕「提交」後,就會把表單的中keyword文本框的內容賦值給a.
這里我用的是MVC..前端用的VB Razor.

② VB怎樣上傳圖片到伺服器

<%
'****************************************************
'這是類文件,用來保存有關文件上傳的類
'****************************************************

'----------------------------------------------------------------------------------
Class jjUpload
'定義幾個私有變數,在類內部都可以使用
Private formData,formSize,bncrlf,divider

'下面是初始化類的方法
Private Sub Class_Initialize()
formsize=Request.TotalBytes '獲取傳上來的二進制數據的大小
formdata=Request.BinaryRead(formsize) '獲取傳上來的二進制數據
bncrlf=ChrB(13) & ChrB(10) '回車換行標記
divider=LeftB(formData,CInt(InstrB(formdata,bncrlf))-1) '分隔符
End Sub

'下面的函數用來返回上傳文件對象
Public Function GetFiles(FormName)
Dim objGetFiles
Set objGetFiles=New MyGetFiles
Call objGetFiles.GetProperty(formData,FormName)
Set GetFiles=objGetFiles
End Function

'下面的函數用來返回上傳表單對象
Public Function GetForms(FormName)
Dim objGetForms
Set objGetForms=New MyGetForms
Call objGetForms.GetValue(formdata,FormName)
Set GetForms=objGetForms
End Function

End Class
'----------------------------------------------------------------------------------
Class MyGetFiles
'定義幾個私有變數
Dim theFilePath,theFileName,theExt,theSize,theMIME,theformData
'定義幾個只讀屬性,用來返回有關信息
Public Property Get FilePath
FilePath=theFilePath
End Property
Public Property Get FileName
FileName=theFileName
End Property
Public Property Get Ext
Ext=theExt
End Property
Public Property Get Size
Size=theSize
End Property
Public Property Get MIME
MIME=theMIME
End Property

'下面是初始化類的方法
Private Sub Class_Initialize()
End Sub

'下面是返回各個類的屬性
Public Sub GetProperty(formData,FormName)
Dim bncrlf,divider
bncrlf=ChrB(13) & ChrB(10) '回車換行標記
divider=LeftB(formData,CInt(InstrB(formdata,bncrlf))-1) '分隔符
'下面開始查找該FormName對應的內容,strTemp變數用來保存一個二進制字元串
'dataStart為開始位置,dataEnd為結束位置,dataLen為要取信息的長度,temp為臨時使用。
Dim strTemp,dataStart,dataEnd,dataLen,temp,intFlag
'因為發生引號嵌套,這里的內層引號用""代替。
strTemp=StringToBinary("Content-Disposition: form-data; name=""" & FormName & """; filename=""")
'在formData中查找二進制字元串strTemp,如果找到了就繼續處理,如果找不到返回錯誤信息。
intFlag=InstrB(formData,Divider & bncrlf & strTemp)
Dim arrayTemp()
If intFlag>0 Then
'重定義數組長度
Redim arrayTemp(4)
'首先返迴文件在客戶端的路徑
dataStart=intFlag+LenB(Divider & bncrlf & strTemp) '定位到第1個字元
dataend=InstrB(datastart,formdata,bncrlf)-2 '定位到最後1個字元
dataLen=dataend-datastart+1 '返回要取信息的長度
theFilePath=BinaryToString(MidB(formdata,datastart,datalen)) '返迴文件路徑
'返迴文件的名稱,其實只要從客戶端路徑中分析出文件名稱即可
theFileName=Mid(theFilePath,InstrRev(theFilePath,"\")+1)
'返迴文件的擴展名,其實只要從文件名稱中分析出文件擴展名即可
theExt=Mid(theFileName,InstrRev(theFileName,".")+1)
'下面獲取文件的MIME類型
temp=dataend '記住當前位置
datastart=temp+18 '定位到第1個字元
dataend=InstrB(datastart,formdata,bncrlf & bncrlf)-1 '定位到最後1個字元
dataLen=dataend-datastart+1 '返回要取信息的長度
theMIME=BinaryToString(MidB(formdata,datastart,datalen)) '返回MIME類型
'下面獲取文件大小
temp=dataend
datastart=dataend+5 '定位到第1個字元
dataend=InstrB(datastart,formdata,divider)-3 '定位到最後1個字元
theSize=dataend-datastart+1 '返迴文件大小
End If
'將formData保存在本類的私有變數中,以備使用
theformData=formData
End Sub
'----------------------------------------------------------------------------------
'下面定義一個保存文件的方法
Public Function SaveToFile(FormName,SaveFilePath,OverWriteFlag)
Dim bncrlf,divider
bncrlf=ChrB(13) & ChrB(10) '回車換行標記
divider=LeftB(theformData,CInt(InstrB(theformdata,bncrlf))-1) '分隔符
'下面開始查找該FormName對應的內容,strTemp變數用來保存一個二進制字元串
'dataStart為開始位置,dataEnd為結束位置,dataLen為要取信息的長度,temp為臨時使用。
Dim strTemp,dataStart,dataEnd,dataLen,temp,intFlag,filepath,filename
'因為發生引號嵌套,這里的內層引號用""代替。
strTemp=StringToBinary("Content-Disposition: form-data; name=""" & FormName & """; filename=""")
'在formData中查找二進制字元串strTemp,如果找到了就繼續處理,如果找不到返回錯誤信息。
intFlag=InstrB(theformData,Divider & bncrlf & strTemp)
Dim arrayTemp()
If intFlag>0 Then
'因為後面要用到文件的名字,所以首先返迴文件的名字
dataStart=intFlag+LenB(Divider & bncrlf & strTemp) '定位到第1個字元
dataend=InstrB(datastart,theformData,bncrlf)-2 '定位到最後1個字元
dataLen=dataend-datastart+1 '返回要取信息的長度
filepath=BinaryToString(MidB(theformData,datastart,datalen)) '返迴文件路徑
filename=Mid(filepath,InstrRev(filepath,"\")+1)
'從當前位置找到兩個回車換行符,也就是文件內容開頭的地方
dataStart=InstrB(intFlag,theformData,bncrlf & bncrlf)+4 '定位到文件內容所在的第1個字元
dataEnd=InstrB(datastart,theformData,divider)-3 '定位到文件內容的最後一個字元
dataLen=dataend-datastart+1 '返迴文件內容的長度
If dataLen<=0 Then
SaveToFile=3
Exit Function
End If

'下面建立了兩個Stream對象,objStream1將整個theformData讀取到對象中,然後將其中的文件內容部分復制到
'objStream2對象中,然後再利用SaveToFile方法保存到指定文件夾下。
Dim objStream1
Set objStream1=Server.CreateObject("Adodb.Stream")
objStream1.Type = 1 '設置二進制方式
objStream1.Open '打開對象
objStream1.Write theformData '寫出文件內容到對象中
Dim objStream2
Set objStream2=Server.CreateObject("Adodb.Stream")
objStream2.Type = 1 '設置二進制方式
objStream2.Open '打開對象
objStream1.Position=datastart-1 '設定起始位置,這里索引從0開始,所以減1
objStream1.CopyTo objStream2,dataLen '寫出文件內容到對象中
'如果允許覆蓋,才覆蓋,否則給出提示信息,提示客戶更改名字
If OverWriteFlag=True Then
objStream2.SaveToFile SaveFilePath & "\" & filename,2 '保存文件,2表示可以覆蓋
Else
Set fso=Server.CreateObject("Scripting.FileSystemObject")
IF fso.FileExists(SaveFilePath & "\" & filename)=True Then
SaveToFile=2 '返回函數值,1表示已經存在同名文件
Exit Function
Else
objStream2.SaveToFile SaveFilePath & "\" & filename,1 '1表示不可以覆蓋
End If
End IF

'關閉對象
objStream1.Close
Set objStream1=Nothing
objStream2.Close
Set objStream2=Nothing
SaveToFile=1 '下面返回函數值,0表示正常
Else
SaveToFile=0 '下面返回函數值,2表示找不到,發生錯誤
End If
End Function

'下面定義保存文件到資料庫的方法
Public Function SaveToDataBase(FormName,strConn,strSql)
Dim bncrlf,divider
bncrlf=ChrB(13) & ChrB(10) '回車換行標記
divider=LeftB(theformData,CInt(InstrB(theformdata,bncrlf))-1) '分隔符
'下面開始查找該FormName對應的內容,strTemp變數用來保存一個二進制字元串
'dataStart為開始位置,dataEnd為結束位置,dataLen為要取信息的長度,temp為臨時使用。
Dim strTemp,dataStart,dataEnd,dataLen,temp,intFlag,fileimage
'因為發生引號嵌套,這里的內層引號用""代替。
strTemp=StringToBinary("Content-Disposition: form-data; name=""" & FormName & """; filename=""")
'在formData中查找二進制字元串strTemp,如果找到了就繼續處理,如果找不到返回錯誤信息。
intFlag=InstrB(theformData,Divider & bncrlf & strTemp)
Dim arrayTemp()
If intFlag>0 Then
'從當前位置找到兩個回車換行符,也就是文件內容開頭的地方
dataStart=InstrB(intFlag,theformData,bncrlf & bncrlf)+4 '定位到文件內容所在的第1個字元
dataEnd=InstrB(datastart,theformData,divider)-3 '定位到文件內容的最後一個字元
dataLen=dataend-datastart+1 '返迴文件內容的長度
fileimage=MidB(theformData,datastart,datalen) '返回二進制文件內容

If dataLen<=0 Then
SaveToFile=3 '3表示根本沒有選擇文件
Exit Function
End If

'!!!因為當文件大小為奇數字元時,在往資料庫中保存時有一些小問題,會少一個位元組,所以這里先給它加一個二進制空格
If dataLen Mod 2 = 1 Then
fileimage=fileimage & Chrb(32)
datalen=datalen+1
End If

'下面將文件保存到資料庫中
Dim db,cmd,rs
Set db=Server.CreateObject("ADODB.Connection")
db.Open strConn
Set cmd= Server.CreateObject("ADODB.Command")
cmd.ActiveConnection=db
cmd.CommandText=strSql
'下面建立一個參數對象prm,並將該對象加入到參數集合中,204表示是二進制值
Dim prm
Set prm=cmd.CreateParameter("fileimage",204,1,datalen,fileimage)
cmd.Parameters.Append prm
set rs=cmd.Execute
SaveToDatabase=1 '返回函數值,0表示正常
Else
SaveToDatabase=0 '返回函數值,2表示錯誤
End If
End Function

'下面是注銷該類的方法
Private Sub Class_Terminate()
'theformData=Nothing
End Sub

End Class
'----------------------------------------------------------------------------------
Class MyGetForms
'定義1個私有變數
Dim theValue
'定義幾個只讀屬性,用來返回有關信息
Public Property Get Value
Value=theValue
End Property

'下面是初始化類的方法
Private Sub Class_Initialize()
End Sub

'該方法給屬性賦值
Public Sub GetValue(formData,FormName)
Dim bncrlf,divider
bncrlf=ChrB(13) & ChrB(10) '回車換行標記
divider=LeftB(formData,CInt(InstrB(formdata,bncrlf))-1) '分隔符
'下面開始查找該FormName對應的內容,下面會首先定義幾個變數,strTemp為一個字元串變數,臨時保存二進制字元串
'dataStart為開始位置,dataEnd為結束位置,dataLen為要取信息的長度,temp為臨時使用,為了記住當前位置。
Dim strTemp,dataStart,dataEnd,dataLen,temp,intFlag
strTemp=StringToBinary("Content-Disposition: form-data; name=""" & FormName & """")
'在整個二進制字元串中查找下面這一個二進制字元串
intFlag=InstrB(formData,Divider & bncrlf & strTemp & bncrlf & bncrlf)
'如果找到了,就依次返回有關信息,如果找不到,就返回一個錯誤信息
If intFlag>0 Then
datastart=intFlag+LenB(Divider & bncrlf & strTemp & bncrlf & bncrlf) '定位到第1個字元
dataend=InstrB(datastart,formdata,divider)-3 '定位到最後1個字元
dataLen=dataend-datastart+1 '返回要取信息的長度
theValue=BinaryToString(MidB(formdata,datastart,datalen)) '返回出表單內容信息
Else
theValue=""
End If
End Sub
End Class

'------------------------------------------------------------------------------------------------
'該函數可以將二進制字元串轉換成文本字元串
Function BinaryToString(thedata)
'變數strNow表示正在處理的字元,strTemp用來保存已經處理完畢的字元串
'變數flag是一個標志,False表示前一個字元不是中文,True表示前一個字元是中文
Dim strNow,strTemp,flag,I
flag=False
'利用循環依次轉換每一個字元
For I=1 To LenB(thedata)
'因為一個中文字元包括兩個位元組,如果flag=True,表示前一個字元是中文,所以
'要跳過該字元,需要令標志flag=False。否則表示不是中文,就需要將其轉換
If flag=True Then
flag=False
Else
'取出當前二進制字元
strNow=MidB(thedata,I,1)
'如果AscB(strNow)>127,表示這是一個中文字元,AscB(tsrNow)<127,表示不是中文字元
If AscB(strNow) > 127 Then
'如果是中文,首先需要把當前字元和下一個字元調換位置,然後用AscW
'返回對應的ASCII碼。隨之,用Chr函數返回該ASCII碼對應的文本
'最後,還要把中文標志設為True
strTemp=strTemp & Chr(AscW(MidB(thedata,I+1,1) & strNow))
flag=True
Else
'這表示是英文,AscB返回對應的ASCII碼,Chr返回對應的文本字元
strTemp=strTemp & Chr(AscB(strNow))
End If
End If
Next
BinaryToString=strTemp '返回函數值
End Function

'該函數可以將文本字元串轉換成二進制字元串
Function StringToBinary(thedata)
'變數strNow表示正在處理的字元,strTemp用來保存已經處理完畢的字元串
'變數intNow用來表示當前字元的ASCII碼
'變數ascLow和ascHigh用來保存中文字元的第1個和第2個位元組
Dim strNow,intNow,strTemp,I,binLow,binHigh
'利用循環依次轉換每一個字元
For I=1 To Len(thedata)
'取出當前文本字元,並返回ASCII碼
strNow=Mid(thedata,I,1)
intNow=Asc(strNow)
'如果Asc(strNow)<0,則表示是中文字元,則需要加上65535返回它的無符號數值
If intNow<0 Then
intNow=intNow+65535
End If
'如果加上65535後ASCII碼大於255,則表示是中文,中文是用兩個位元組表示的,必須分開處理。當然,如果是英文字元就簡單了
If intNow>255 Then
'這里binLow返回低位元組,binHigh返回高位元組其中Hex函數返回一個字元串,表示一個數字的十六進制數
binLow="&H" & Left(Hex(Asc(strNow)),2)
binHigh="&H" & Right(Hex(Asc(strNow)),2)
strTemp=strTemp & ChrB(binLow) & ChrB(binHigh)
Else
'這表示是英文,Asc函數返回ASCII碼,ChrB返回對應的二進制字元。
strTemp=strTemp & ChrB(Asc(strNow))
End If
Next
StringToBinary=strTemp '返回函數值
End Function
%>

③ vb的http來post上傳圖片,我用的是winsock上傳,文本沒有問題,圖片和exe出現問題

圖片和EXE文件屬於二進制文件,如果按文本文件的方式上傳肯定是會出錯的。而你的代碼從頭到腳都是為了上傳文本文件而設計的,無法上傳二進制文件。

④ 【VB】vb如何post提交

vb的inet、webbrowser、winsock控制項都可以post
你可以在網路中搜索相應控制項的post
一般要先用抓包工具得到post數據,再在程序中按樣post

熱點內容
如何尋找資產配置機會 發布:2024-10-13 19:13:47 瀏覽:370
轎車安卓中控怎麼安裝手機卡 發布:2024-10-13 19:05:23 瀏覽:447
商城首頁android 發布:2024-10-13 17:53:20 瀏覽:494
甲骨文雲伺服器如何申請 發布:2024-10-13 16:49:39 瀏覽:132
c語言中參數傳遞 發布:2024-10-13 16:30:15 瀏覽:79
cos伺服器搭建 發布:2024-10-13 16:17:41 瀏覽:334
象棋軟體演算法 發布:2024-10-13 15:32:35 瀏覽:899
平板怎麼看真正配置 發布:2024-10-13 14:53:32 瀏覽:33
微信存儲空間的其他 發布:2024-10-13 14:52:14 瀏覽:671
怎麼繞過系統密碼登錄密碼登錄密碼登錄 發布:2024-10-13 14:47:41 瀏覽:509