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

    xiaoxiao2021-03-25  123

    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;

    转载请注明原文地址: https://ju.6miu.com/read-21429.html

    最新回复(0)