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 dataif (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);
...