Grafik-Datei aus dem Internet laden



  • Hallo, ich möchte eine Grafik-Datei aus dem Internet als Datei speichern.
    Das Laden klappt, aber nicht das Speichern, denn die Datei ist nicht lesbar. Kann mir jemand einen Tip geben, was isch falsch mache ?

    char* GetImage(char* sQueryString)
    {
    HINTERNET hInternet;
    HINTERNET hQuerySite;
    DWORD dwBytesRead, dwBytesTotal=0;
    FILE *f;
    char *glWebBuffer=NULL;
    char *szFileName;
    char xx[99];
    static char szData[4096];
    sQueryString = "http://pic.autoscout24.com/images/7/6/5/18088567_1.jpg";

    // open internet
    hInternet=InternetOpen("XWebQuery",PRE_CONFIG_INTERNET_ACCESS,NULL,NULL,0);
    if (!hInternet)
    // fails
    return "fails";

    // attempt connection
    hQuerySite=InternetOpenUrl(hInternet,sQueryString,NULL,0,INTERNET_FLAG_RELOAD,0);
    if (!hQuerySite)
    {
    // fails
    InternetCloseHandle(hInternet);
    return "fails";
    }
    // attempt read web data

    if (glWebBuffer) memset(glWebBuffer, '\0', sizeof(glWebBuffer));
    do
    {
    if (!InternetReadFile (hQuerySite, (LPVOID)szData, sizeof(szData)-1, &dwBytesRead) ) // attempt read web data
    {
    break;
    }

    if (dwBytesRead == 0) break; //finish
    szData [dwBytesRead] = '\0';
    dwBytesTotal +=dwBytesRead;
    if (!glWebBuffer)
    {
    glWebBuffer = (char*)malloc(sizeof(char)(dwBytesTotal+1));
    if (glWebBuffer) strcpy(glWebBuffer, szData);
    else
    MessageBox(NULL, "lack of memory", "internal program-error", MB_OK | MB_TASKMODAL);
    }
    else
    {
    glWebBuffer = (char
    )realloc(glWebBuffer, sizeof(char)*(dwBytesTotal+1));
    if (glWebBuffer) strcat(glWebBuffer, szData);
    else
    MessageBox(NULL, "lack of memory", "internal program-error", MB_OK | MB_TASKMODAL);
    }
    }
    while (dwBytesRead > 0);

    InternetCloseHandle(hQuerySite);
    InternetCloseHandle(hInternet);

    sprintf(xx, "%d Bytes", dwBytesTotal);
    MessageBox(NULL, xx, "41", MB_OK | MB_TASKMODAL);

    if (dwBytesTotal < 5)
    return "fails";

    glWebBuffer[dwBytesTotal]='\0';
    szFileName=strrchr(sQueryString,'/');
    f=fopen(szFileName+1,"wb");
    if(f==NULL) return "fails";
    fwrite(glWebBuffer,1,dwBytesTotal,f);
    fclose(f);
    ...


Anmelden zum Antworten