关于HTTP上传文件报文代码片记录

来源:互联网 发布:直播吧软件下载 编辑:程序博客网 时间:2024/06/05 17:59

HTTP上传POST报文通过使用TIdMultiPartFormDataStream类,在网上看到有人说这个TIdMultiPartFormDataStream类使用释放有问题,BUG很多,暂时我没遇到,至少解决了我的问题,期待有高手写一个更加好更加完美的类能替代这个。


引用单元

uses  IdGlobal, IdMultipartFormData,idhttp;

代码片
function UploadFile(AUrl, AFileName, ATicket, AProjectid, AVersion, AVersionTime: WideString): WideString;  procedure _InitFormDataStream(var ASendStream: TIdMultiPartFormDataStream);  begin    if not Assigned(ASendStream) then Exit;        ASendStream.AddFormField('ticket',        ATicket,      'utf-8').ContentTransfer := '8bit';    ASendStream.AddFormField('projectTreeId', AProjectid,   'utf-8').ContentTransfer := '8bit';    ASendStream.AddFormField('version',       AVersion,     'utf-8').ContentTransfer := '8bit';    ASendStream.AddFormField('versionTime',   AVersionTime, 'utf-8').ContentTransfer := '8bit';    ASendStream.AddFile('file',               AFileName,    'multipart/form-data');  end;var  LSendStream: TIdMultiPartFormDataStream;  IdHttp: TIdHTTP;begin  if AUrl = '' then Exit;  if AFileName = '' then Exit;  LSendStream := TIdMultiPartFormDataStream.Create;  IdHttp := TIdHTTP.Create(nil);  try    _InitFormDataStream(LSendStream);    IdHttp.Request.ContentType := LSendStream.RequestContentType;    IdHttp.Request.CharSet := 'utf-8';    IdHttp.Request.ContentEncoding := 'utf-8';    Result := IdHttp.Post(AUrl, LSendStream);  finally    FreeAndNil(IdHttp);    FreeAndNil(LSendStream);  end;end;

0 0