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
[47489] http이용 unix서버로 파일 업로드시 405에러 발생 이유가 궁금합니다.
leo21c [leo21c] 2685 읽음    2006-12-20 11:08
아래와 같은 방법으로 MSDN에 있는 내용을 이용해서 WinInet의 함수들을 가지고 만들었습니다.
UNIX 파일 서버에서 파일 다운로드는 문제없이 되는데 파일 업로드는 405에러가 발생하네요.
WinInet함수들을 가지고 Unix로 파일 업로드는 불가능 한 건가요?
405에러라는 것이 Method Not Allowed라는 뜻인데....사용할 수 없다는 거 아닌가요?

제 컴퓨터는 WinXP로 IIS서버를 만들어서 테스트 할 경우에는 문제없이 작동하는 것을 확인했습니다.
그런데 Unix서버에 올릴때만 에러가 발생하네요.
HTTP프로토콜을 이용해서 파일 업로드를 할 경우에 WinSock같은 것을 이용하는 것이 더 좋을까요?

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //인터넷 연결
    hInternet=InternetOpen("HTTPClient", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
    if (hInternet==NULL) return false;

    //URL을 연다.
    hURL = InternetConnect(hInternet, serverAddress/*Host 헤더값, 서버 주소*/,  ServerURL.ID/*strID*/,  URL.PW/*strPassword*/,
      INTERNET_SERVICE_HTTP, 0, 0);

     //인터넷 파일의 핸들을 얻는다.
    hRequest = HttpOpenRequest(hURL, "PUT", strRemoteFile, NULL, NULL,
      0, INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_CACHE_WRITE, 0);
    if (!hRequest) goto exit;

    //로컬 파일의 핸들을 얻고, 사이즈를 저장한다.
    hLocalFile=CreateFile(strLocalFile, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    if(!hLocalFile) goto exit;
    nFilesize = GetFileSize(hLocalFile, NULL);

    cBuffer = (char *)malloc(nFilesize); //메모리 할당 사용.
    if(!ReadFile(hLocalFile, cBuffer, nFilesize, &dwRead, NULL)) goto exit;

    //리퀘스트를 보낸다.
    bHttpSendRequest = HttpSendRequest(hRequest, NULL, NULL, cBuffer, dwRead);

    //http header로 전송 결과 확인
    if (!CheckSrvData(hRequest, Header, myParsedServerURL) || !(Header=="200" || Header=="201"))
      goto exit;

    //로컬파일 핸들을 마무리한다.
    if (hLocalFile)
      CloseHandle(hLocalFile);
    //인터넷파일 핸들을 마무리한다.
    if (hRequest)
      InternetCloseHandle(hRequest);

    return bHttpSendRequest; //bHttpSendRequest와 동일한 결과값을 리턴

  exit:
    //로컬파일 핸들을 마무리한다.
    if (hLocalFile)
      CloseHandle(hLocalFile);
    //인터넷파일 핸들을 마무리한다.
    if (hRequest)
      InternetCloseHandle(hRequest);

    return false; //bHttpSendRequest와 동일한 결과값을 리턴

+ -

관련 글 리스트
47489 http이용 unix서버로 파일 업로드시 405에러 발생 이유가 궁금합니다. leo21c 2685 2006/12/20
47501     Re:http이용 unix서버로 파일 업로드시 405에러 발생 이유가 궁금합니다. ayh 2702 2006/12/21
47504         답변감사합니다. 고맙습니다. leo21c 1594 2006/12/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.