|
TIniFile *ini = new TIniFile(ChangeFileExt(Application->ExeName, ".ini"));
String UploadPage = ini->ReadString("pfl2", "upload_page", "");
TIdMultiPartFormDataStream *stream = new TIdMultiPartFormDataStream();
TStringStream *response = new TStringStream("");
String pageName = ini->ReadString("pfl2", "upload_page", "");
int Pos = pageName.LastDelimiter("/");
pageName = pageName.SubString(Pos + 1, pageName.Length() - Pos);
stream->AddFormField("pageName" , pageName);
// stream->AddFormField("mmu_uid" , "1");
// stream->AddFormField("CMD" , "2");
stream->AddFormField("binf_dataCnt" , "1");
stream->AddFormField("ca" , "1");
stream->AddFormField("binf_skin" , "0");
stream->AddFormField("bod_uid" , "0");
stream->AddFormField("bod_subject" , bod_subjectEdit->Text); //제목
stream->AddFormField("bod_mail" , ini->ReadString("pfl2", "email", ""));
stream->AddFormField("mem_uid" , "1");
stream->AddFormField("con_name" , ini->ReadString("pfl2", "name", ""));
String con_content;
for(int i=0; i<con_contentMemo->Lines->Count; i++)
{
con_content += con_contentMemo->Lines->Strings[i] + "\r\n";
}
stream->AddFormField("con_content" , con_content); //내용
stream->AddFormField("cat1" , "2");
stream->AddFormField("cat3" , "1");
stream->AddFormField("cat2" , "1");
stream->AddFormField("cat4" , TopCategoryNum); //TopCategory
stream->AddFormField("cat5" , SubCategoryNum); //SubCategory
stream->AddFormField("text2" , text2Edit->Text); //태그
stream->AddFormField("status" , "1");
stream->AddFormField("perm" , "1");
stream->AddFormField("scrap" , "1");
if(SubCategoryNum == 1000)
stream->AddFormField("bod_subject1" , TopCategoryNum);
else
stream->AddFormField("bod_subject1" , SubCategoryNum);
stream->AddFormField("mem_level" , "0");
stream->AddFile("userfile1" , UploadFileEdit->FileName, "application/x-zip-compressed");
stream->Position = 0;
UploadProgressBar->Max = stream->Size;
delete ini;
/////////////////////////////////////////////////////////////////////////////////
멀티파트 데이터 설정하는곳이고요...
이 아래가 파일을 실제 전송하는 곳입니다.
try
{
IdHTTP1->Post(UploadPage, stream, response);
throw Exception("");
ModalResult = mrOk;
}
catch (...)
{
return;
}
post가 실행 되는 도중에 idHTTP를 Disconnect()로 끊어버리면 파일 업로드가 끊어지긴 하는데
시간이 지난 후에 ModalResult = mrOk; 코드를 실행 해 버립니다.
업로드는 스레드로 따로 빼서 돌린 상태구요...
취소버튼의 코드는
IdHTTP1->Disconnect();
IdHTTP1->DisconnectSocket();
이렇게 두개가 되어있었습니다.
웹 검색을 해보니 post 도중에는 취소가 안된다고 하셔서 try catch 로 막아보긴 했는데...
그래도 안되네요 ㅜㅜ
|