728x90
반응형
앞서 WinInet Component Suite를 소개했었습니다.
GET 방식에 대한 예제만 있었는데, 이번에는 POST 방식으로 파일 업로드하는 예제를 소개하겠습니다.
파일을 업로드 하기 위해서는 multipart/form-data로 데이터를 전송해야 합니다.
multipart/form-data 형식으로 데이터를 직접 만드는 방식 보다는, 인디에 이미 클래스화 되어 있는 TIdMultiPartFormDataStream로 간단하게 만들 수 있습니다.
자세한 내용은 아래의 소스를 참조해 주시기 바랍니다.
아쉬운 점은 TINetHttp.SendRequest 메소드에서 스트림(TStream)을 지원하지 않는 점입니다.
GET 방식에 대한 예제만 있었는데, 이번에는 POST 방식으로 파일 업로드하는 예제를 소개하겠습니다.
파일을 업로드 하기 위해서는 multipart/form-data로 데이터를 전송해야 합니다.
multipart/form-data 형식으로 데이터를 직접 만드는 방식 보다는, 인디에 이미 클래스화 되어 있는 TIdMultiPartFormDataStream로 간단하게 만들 수 있습니다.
자세한 내용은 아래의 소스를 참조해 주시기 바랍니다.
uses IdMultipartFormData, WINet
var
AIdMultiPartFormDataStream : TIdMultiPartFormDataStream;
AStringStream : TStringStream;
begin
AIdMultiPartFormDataStream := TIdMultiPartFormDataStream.Create;
AStringStream := TStringStream.Create('');
with INetHttp do
try
AIdMultiPartFormDataStream.AddFormField('desc', '4');
AIdMultiPartFormDataStream.AddFormField('title', '5');
AIdMultiPartFormDataStream.AddFormField('folder_no', '6');
AIdMultiPartFormDataStream.AddFile('upload_pic', edtFile.Text, 'application/octet-stream');
AIdMultiPartFormDataStream.Seek(0, 0);
AStringStream.CopyFrom(AIdMultiPartFormDataStream, AIdMultiPartFormDataStream.Size);
INetUrl.Url := edtUrl.Text;
ServerName := INetUrl.HostName;
Open;
OpenRequest('POST', INetUrl.UrlPath);
SendRequest('Content-Type: multipart/form-data; boundary=' + AIdMultiPartFormDataStream.Boundary, AStringStream.DataString);
finally
CloseRequest;
Close;
AStringStream.Free;
AIdMultiPartFormDataStream.Free;
end;
end;
아쉬운 점은 TINetHttp.SendRequest 메소드에서 스트림(TStream)을 지원하지 않는 점입니다.
'프로그래밍 > 델파이' 카테고리의 다른 글
델파이 IDE 환경정보를 그대로 활용하자. (0) | 2009.11.27 |
---|---|
TMonthCalendar에서 날짜 선택에 대한 이벤트 확장하기 (0) | 2009.11.11 |
Internet Explorer7 에서 현재 활성화 되있는 탭윈도우 핸들 얻기 (0) | 2009.09.19 |
Live Templates(라이브 템플릿) (0) | 2009.09.18 |
델파이 컴파일러를 감염시키는 바이러스 주의(델파이 4~7) (0) | 2009.08.24 |