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
