首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

C++Builder XE2怎么通过IDHTTP的POST方法下传文件

2013-03-14 
C++Builder XE2如何通过IDHTTP的POST方法上传文件?DEPHI的代码如下:varMultiPartFormDataStream: TMsMulti

C++Builder XE2如何通过IDHTTP的POST方法上传文件?
DEPHI的代码如下:

var
  MultiPartFormDataStream: TMsMultiPartFormDataStream;
  idhttp1:TIdHTTP;
begin
 MultiPartFormDataStream := TMsMultiPartFormDataStream.Create;
 try
    idhttp1:=Tidhttp.Create(nil);
    IdHTTP1.ProtocolVersion:=pv1_1;
    IdHTTP1.HandleRedirects := True;
    IdHTTP1.Request.UserAgent:='Klive'; 
    IdHTTP1.Request.Connection:='Keep-Alive';
    IdHTTP1.HTTPOptions:=IdHTTP1.HTTPOptions+[hoKeepOrigProtocol];
    IdHttp1.Request.ContentType := MultiPartFormDataStream.RequestContentType;

     MultiPartFormDataStream.AddFormField('name', 'file');
     MultiPartFormDataStream.AddFormField('filename', Path);
     MultiPartFormDataStream.AddFile('file', filename, 'testmime');
     MultiPartFormDataStream.PrepareStreamForDispatch;
     MultiPartFormDataStream.Position := 0;

     try
      Result:=pchar(idhttp1.Post(str,MultiPartFormDataStream));
     except
       on e: EIdHTTPProtocolException do
       begin
        result:= pchar(e.ErrorMessage);//   Application.MessageBox(PChar(e.ErrorMessage), 'ERROR', MB_OK + MB_ICONSTOP);
       end;
     end;

 finally
 MultiPartFormDataStream.Free;

这个代码是金山快盘上传文件的实现代码,具体要求是这样的:
http://www.kuaipan.cn/developers/document_apiupload.ht


POST /cdlnode/1/fileops/upload_file?oauth_nonce=57895862&oauth_timestamp=1328956550&oauth_consumer_key=xcKXXgo9AkXdJuBn&oauth_signature_method=HMAC-SHA1&oauth_version=1.0&oauth_token=fe6265afa5c74866a62573b34ca411fb&oauth_signature=eQ9BhjCaIpUAWDD3cbb%2BrtlfXt4%3D&path=%2Fttt1328956550.95sss%2Ftestw.wps&root=app_folder&overwrite=True HTTP/1.1
Accept-Encoding: identity
Content-Length: 237
Host: ufaclient.wps.cn
Content-Type: multipart/form-data; boundary=----------ThIs_Is_tHe_bouNdaRY_$
Connection: close
User-Agent: klive

------------ThIs_Is_tHe_bouNdaRY_$
Content-Disposition: form-data; name="file"; filename="testw.wps"
Content-Type: application/octet-stream

1328956550.991328956550.991328956550.991328956550.99
------------ThIs_Is_tHe_bouNdaRY_$--



在C++Builder里面没TMsMultiPartFormDataStream这个类,我的问题是:
1)用TMemoryStream如何实现?
2)POST上传文件怎么通过表单实现?
c++builder 金山
[解决办法]
bcb的优点是可以直接调用delphi单元,
把delphi部分做成函数,然后在bcb把它加栽进来
直接调用其函数就行了,呵呵
[解决办法]
不会没有把,xe2应该还是indy10的版本,变化不大。
[解决办法]
TMsMultiPartFormDataStream 是一个自定义类吧?

http://hi.baidu.com/hoctdhppxtbkrvq/item/7f0bfcb2606050a6eaba939c

热点排行