这样的,最近的一个项目需要在客户端传文件到web服务器,在web服务器通过asp.net自动命名后返回路径,目前找了蛮多资料,有两种方式,一个是TIdHTTP,一个是调用wenservice,可是这两个方式好像都不行,TIdHTTP传的文件是乱码,
在C#是这么接收的
 
byte[] Docbuffer = Request.BinaryRead(Request.TotalBytes);        FileStream objFS = new FileStream(Server.MapPath("1.txt"), FileMode.Create);
        BinaryWriter objBW = new BinaryWriter(objFS);
        objBW.Write(Docbuffer);
        objBW.Close();
        objFS.Close();是不是不对呢?
webservice方式调用后出现
Unable to retrieve the URL endpoint for Service/Port....跪求各位大侠给解决方案小弟叩谢

解决方案 »

  1.   

    Tidhttp的DELPHI是这么传的
    procedure SendPostData;stdcall;
      Const
      CRLF = #13#10;
      var
         Source: TMemoryStream;
         Source1: TMemoryStream;
         Response: TStringStream;
         S,s1: String;
    begin
      Screen.Cursor := crHourGlass;
      try
        form1.HTTP.Request.Username := '';
        form1.HTTP.Request.Password := '';
        //HTTP.Request.ProxyServer := '';
        form1.http.Port:=80;
        form1.HTTP.Request.ContentType := 'multipart/form-data';
        //form1.HTTP.Intercept := form1.LogDebug;
        //http.InterceptEnabled
        //HTTP.InterceptEnabled := true;    Response := TStringStream.Create('');
           try          S := '-----------------------------7cf1d6c47c' + CRLF +
                   'Content-Disposition: form-data; name="file1"; filename="'+filename+'"'+CRLF +
                   'Content-Type: application/octet-stream' + CRLF + CRLF;          //上传文件内容
              s1:='file one content. Contant-Type can be application/octet-stream or if'+
                  'you want you can ask your OS fot the exact type.' + CRLF +
                  '-----------------------------7cf1d6c47c' + CRLF + //分界符,用于分隔表单(Form)中的各个域
                  'Content-Disposition: form-data; name="text1"' + CRLF + CRLF +
                  'hello2' + CRLF +
                  '-----------------------------7cf1d6c47c--';          //提交的下一个表单内容域的内容
              s1:=CRLF +'-----------------------------7cf1d6c47c' + CRLF +
                  'Content-Disposition: form-data; name="text1"' + CRLF + CRLF +
                  'hello2' + CRLF +
                  '-----------------------------7cf1d6c47c--';          Source := TMemoryStream.Create;
              Source1 := TMemoryStream.Create;
              Source1.LoadFromFile(filename);
              Response:=TStringStream.Create('') ;
              Response.CopyFrom(source1,source1.Size);          s:=s+Response.DataString;//因为只能传字符串
              Source.Position :=0;
              Source.Write(s[1],length(s));
              Source.Position :=source.Size ;
              Source.Write(s1[1],length(s1));
              Response.Position :=0;
              try
                form1.HTTP.Post(form1.cbURL.Text, Source, Response);
              finally
                Source.Free;
              end;
              finally
                Response.Free;
              end;
        finally
          Screen.Cursor := crDefault;
        end;end;
      

  2.   

    跨语言编程都是编码的问题,C#是Unicode的,DELPHI是AnsiString,检查一下这方面。