vbpost上傳
① 如何用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
