C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[59005] idhttp 로 파일 업로드 하다 중지 시킬때 어떻게 하나요?
박진수 [] 1655 읽음    2009-11-09 10:33
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 로 막아보긴 했는데...

그래도 안되네요 ㅜㅜ

+ -

관련 글 리스트
59005 idhttp 로 파일 업로드 하다 중지 시킬때 어떻게 하나요? 박진수 1655 2009/11/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.