• Tistory
    • 태그
    • 위치로그
    • 방명록
    • 관리자
    • 글쓰기
Carousel 01
Carousel 02
Previous Next

HTTP 프로토콜을 이용하여 웹상의 파일을 다운로드 하자.

Programming/C, C++, MFC 2016. 3. 9. 15:32




웹상을 파일을 프로그램을 통해 다운로드 하기 위한 함수.


여러 블로그에 글이 있지만 가장 쓰기 간단하게 잘 정리되있는 글 담아두기..


원문 중

=================================================================================================

getFileFromHttp("http://tattertools.com/ko/tistoryBanner01.gif", "tistoryBanner01.gif");

이미지 파일을 다운 받으려면 어떻게 해야되는지 몰라서 한참 해맸다.
URL에는 파일명까지 들어가야된다. 그리고 저장할 파일의 이름을 지정한다.
특정 폴더에 파일을 저장하려면 저장할 파일에 패스를 입력하면된다.
예를 들어 URL을 이렇게 주고 "http://wwwi.tistory.com/"
저장할 파일을 "test.html"로 주면 http://wwwi.tistory.com/의 첫페이지가  test.html로 저장된다.


  1. #include "Wininet.h"      //  밑의 함수를 쓰려면 이 라인을 반드시 추가해야 됨
  2. #define READ_BUF_SIZE    1024
  3.  
  4. // 웹상의 파일을 다운로드
  5. int getFileFromHttp(char* pszUrl, char* pszFile)
  6. {
  7.     HINTERNET    hInet, hUrl;
  8.     DWORD        dwReadSize = 0;
  9.  
  10.     // WinINet함수 초기화
  11.     if ((hInet = InternetOpen("MyWeb",            // user agent in the HTTP protocol
  12.                     INTERNET_OPEN_TYPE_DIRECT,    // AccessType
  13.                     NULL,                        // ProxyName
  14.                     NULL,                        // ProxyBypass
  15.                     0)) != NULL)                // Options
  16.     {
  17.         // 입력된 HTTP주소를 열기
  18.         if ((hUrl = InternetOpenUrl(hInet,        // 인터넷 세션의 핸들
  19.                     pszUrl,                        // URL
  20.                     NULL,                        // HTTP server에 보내는 해더
  21.                     0,                            // 해더 사이즈
  22.                     0,                            // Flag
  23.                     0)) != NULL)                // Context
  24.         {
  25.             FILE    *fp;
  26.  
  27.             // 다운로드할 파일 만들기
  28.             if ((fp = fopen(pszFile, "wb")) != NULL)
  29.             {
  30.                 TCHAR    szBuff[READ_BUF_SIZE];
  31.                 DWORD    dwSize;
  32.                 DWORD    dwDebug = 10;
  33.  
  34.                 do {
  35.                     // 웹상의 파일 읽기
  36.                     InternetReadFile(hUrl, szBuff, READ_BUF_SIZE, &dwSize);
  37.  
  38.                     // 웹상의 파일을 만들어진 파일에 써넣기
  39.                     fwrite(szBuff, dwSize, 1, fp);
  40.  
  41.                     dwReadSize += dwSize;
  42.                 } while ((dwSize != 0) || (--dwDebug != 0));
  43.  
  44.                 fclose( fp );
  45.             }
  46.             // 인터넷 핸들 닫기
  47.             InternetCloseHandle(hUrl);
  48.         }
  49.         // 인터넷 핸들 닫기
  50.         InternetCloseHandle(hInet);
  51.     }
  52.     return(dwReadSize);
  53. }


출처 : http://wwwi.tistory.com/35


저작자표시비영리

'Programming > C, C++, MFC' 카테고리의 다른 글

class를 포함한 dll 만들기 ( 클래스 동적 라이브러리 )  (1) 2016.05.17
visual studio 프로젝트 및 솔루션 이름을 변경하기.  (0) 2016.05.17
HTTP 프로토콜을 이용하여 웹상의 파일을 다운로드 하자.  (0) 2016.03.09
[Function] 폴더 내 파일 탐색  (0) 2015.12.09
성능 및 메모리 관점에서 살펴본 if문과 switch 문의 차이점  (0) 2015.04.21
[VS2013] error MSB8031 - 멀티바이트문자집합 에러를 해결하자.  (0) 2015.03.06
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 3개, 댓글 0개가 달렸습니다

댓글을 달아 주세요

  • «
  • 1
  • ···
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • ···
  • 51
  • »

카테고리

  • 살다보니.. (414)
    • 주절거림 (3)
    • 취미생활 (36)
      • 지식과 지혜 (3)
      • 풍경이 되어 (4)
      • Memories (17)
      • 엥겔지수를 높여라 (2)
    • mathematics (6)
      • Matrix Computation (2)
      • RandomProcesses (3)
    • English.. (8)
    • Programming (134)
      • C, C++, MFC (51)
      • C# (1)
      • OpenCV (17)
      • Python (47)
      • Git, Docker (3)
      • Matlab (4)
      • Windows (3)
      • Kinect V2 (2)
      • 기타 etc. (6)
    • 전공관련 (73)
      • Algorithm (6)
      • Deep Learning (49)
      • 실습 프로그램 (4)
      • 주워들은 용어정리 (8)
      • 기타 etc. (6)
    • Computer (104)
      • Utility (21)
      • Windows (24)
      • Ubuntu, Linux (55)
      • NAS (2)
      • Embedded, Mobile (2)
    • IT, Device (41)
      • 제품 사용기, 개봉기 (14)
      • 스마트 체험단 신청 (27)
    • Wish List (3)
    • TISTORY TIP (5)
    • 미분류. 수정중 (1)

태그목록

  • 스마트체험단
  • 매트랩 함수
  • Computer Tip
  • 크롬
  • 포르투갈
  • ReadString
  • Deep Learning
  • 딥러닝
  • 오봉자싸롱
  • portugal
  • 칼로리 대폭발
  • SVM
  • matlab
  • DeepLearning
  • utility
  • 큐슈
  • review
  • LIBSVM
  • matlab function
  • 에누리닷컴
  • ColorMeRad
  • random variable
  • function
  • 후쿠오카
  • CStdioFile
  • 매트랩
  • DSLR
  • 갤럭시노트3
  • Convolutional Neural Networks
  • 일본

달력

«   2022/06   »
일 월 화 수 목 금 토
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
06-28 04:37

LATEST FROM OUR BLOG

  • 골뱅이 연산자의 의미 (행렬곱)..
  • 프린터 용지 부족 문제를 해⋯.
  • [MXNet] 데이터 리스트를 만⋯.
  • 예쁘게 출력하자 pprint - pr⋯.
  • 작업표시줄 미리보기를 리스⋯.
  • 이미지 실제 파일 포맷 확인하기.
  • 알리 등 해외배송 배송상태를⋯.
  • 티스토리 코드블럭 내용을 복⋯.
  • warning 을 on/off 하자.
  • windows 10 파일 선택, 파일⋯.
RSS 구독하기

BLOG VISITORS

  • Total : 1,130,795
  • Today : 25
  • Yesterday : 468

Copyright © 2015 Socialdev. All Rights Reserved.

티스토리툴바