客户端VB使用winsock上传:
strHttp = "......"
Winsock1.Protocol = sckTCPProtocol
    Winsock1.RemoteHost = DestUrl.Host
    Winsock1.RemotePort = 80
            
    Winsock1.Connect 
    
    strHttp = "中文异常"
    Winsock1.SendData strHttppWeb服务器端使用apache的common-fileuploads.jar包实现文件接收, 
如果strHttpp的内容中含有中文,则服务器解析报文接收文件时报错:
Processing of multipart/form-data request failed. Stream ended unexpectedly。
如果strHttp只有英文字符,则一切正常,会是什么原因?
strHttp从文件读取内容后需要先做编码转换吗?
服务器端现在可以接收PB以本方式上传的文件(中文也正常),PB中是将文件内容转换为BLOB的方式,
VB中如何实现类似功能?----VB不熟多谢,多谢

解决方案 »

  1.   

    这样看看
    Dim Bytes() as Byte          '定义字节数组
    strHttp = "中文异常" 
    Bytes = StrConv(strHttp,vbFromUnicode)   '将字符串格式化成字节数组
    Winsock1.SendData Bytes                  '发送字节数组
      

  2.   

    最好把中文转换为UTF-8编码。
      

  3.   

    to:SupermanKing
       其实strHttp参数里不只是文件内容,还包含有拼装的http报文信息,如果一起转换为byte
    ,则无法发送消息,因为里面的URL地址之类都被转换了,无法识别   或是PB有其它的上传方法?
      

  4.   

    大家好,情况有所进展:
    进展步骤:
    1、原来组织的HTTP报文中,对于文件内容长度属性的赋值不准确,现改为 lngLength = LenB(StrConv(strHttp, vbFromUnicode))
    2、原来原来读取xml文件的方式不严格: Open strPath For Binary As #1,这种方式读取的时候在内容的末尾添加了特殊字符,
       类似于描述文件编码格式的东西,因此有这一点也引起了点小问题。
    现在对于普通文件的上传已解决。
    现有问题:
    对于zip压缩文件的上传还是不行,尚未深入查,可能时出现在对文件的读取上,怀疑对zip文件的读取和普通文件的读取应该用
    不同地方法,现采用的是:
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set a = fs.OpenTextFile(strPath)
    GetFileContents = a.readall哪位有什么建议?----------问题解决,依然尽快结贴。
      

  5.   

    你没注意你的读取文件的方式有问题吗?
    OpenTextFile,很明显你是用文本方式读二进制文件,肯定会出问题的。