금요일, 8월 21, 2009

MultiPart Stream

잊어 버릴까봐 적어 둔다.
사실 "Copy Memory data to String" 에서 SetString() 을 잊어 버릴까봐... ㅋㅋ
SetString() 은 Delphi 7 API 이다.

//!hjkim: MultiPart Example [
//
procedure TForm1.Button1Click(Sender: TObject);
var
strURL: String;
multiPartDataStream: TIdMultiPartFormDataStream;
recvStream: TMemorySTream;
http1: TIdHTTP;
//fileStream: TFileStream;

strUniqueFilename: string;
strRes: string;

// Copy Memory data to String
pBuf: PChar;
begin
strURL := 'http://...com/test.php?';
strUniqueFilename := 'testFile.xxx';

// Create MultiPart and Memory Stream
multiPartDataStream := TIdMultiPartFormDataStream.Create;
recvStream := TMemorySTream.Create;
http1 := TIdHTTP.Create( self );

try
// Fill Field into Form
multiPartDataStream.AddFormField( 'fileName', strUniqueFilename );
//CopyFile( '/test.tmp', '/tmp/test.tmp', FALSE );
multiPartDataStream.AddFile( strUniqueFilename, '/tmp/test.tmp', 'txt/plain' );
multiPartDataStream.Position := 0;

// Send stream to Server
try
http1.Post( strURL, multiPartDataStream, recvStream );
except
end;
finally
//fileStream := TFileStream.Create( '/tmp/log.txt', fmCreate );
//recvStream.SaveToStream( fileStream );
//fileStream.Free;

// Copy Memory data to String
pBuf := recvStream.Memory;
SetString( strRes, pBuf, recvStream.Size );
ShowMessage( 'Message: ' + 'Recv = ' + strRes );

// Release memory
http1.Free;
multiPartDataStream.Free;
recvStream.Free;
end;
end;
//!hjkim: MultiPart Example ]

-----
Cheers,
June

댓글 없음:

댓글 쓰기