InternetReadFile und zlib



  • Hi,

    ich bin verzweifelt ab versuchen eine .gz Datei mit InternetReadFile zu lesen und den buffer zu dekomprimieren.
    Ich möchte verhindern das ich die Datei lokal speichern muss und dann auslesen (was wunderbar funktioniert).

    Testweise hab ich folgendes:

    z_stream z;
    	BYTE input_buffer[1500] = {0};
    	BYTE output_buffer[1500] = {0};
    	int status;
    	CString string1;
    	z.zalloc = 0;
        z.zfree = 0;
        z.opaque = 0;
    
    	z.avail_in = 0;
    	z.next_out = output_buffer;
    	z.avail_out = 1024;
    
    	inflateInit(&z);
    
    	InternetReadFile(hSession, input_buffer, 1024, &dwReadSizeOut);
    	z.next_in = input_buffer;
    	z.avail_in = (int)dwReadSizeOut;
    	status = inflate(&z, Z_FINISH );
    
    	string1.Format("%d", status);
    	AfxMessageBox(string1);
    
    	string1.Format("%s", output_buffer);
    	AfxMessageBox(string1); 
    	inflateEnd(&z);
    

    inflate gibt mir einen Z_DATA_ERROR aus, und ich weiß nicht wie ich diesen Fehler beheben kann, sofern es überhaupt möglich ist.
    Hat jemand eine Idee oder das Problem schon mal gehabt ?

    Mit freundlichen Grüßen
    TheRealViper



  • Hallo,
    ich lese auch die gz dateien aus dem internet, und um die zu dekomprimieren benutze ich decompress_gzip funktion, such mal nach der, vielleicht ist das was für dich?

    lg
    pixel



  • Hast du irgendwie die funktion parat und kannst sie mir schicken oder einen link ?
    Kann irgendwie nichts dazu finden



  • Hallo,
    hier ist der link, du wirst vielleicht diese ein bißchen umbauen müssen bzw.anpassen!?

    hier der link:
    http://cvs.pld.org.pl/SOURCES/links-content_encoding.patch

    wenn der zu viel ist, hier ein demo project:
    http://www.codeproject.com/file/rarchive_submission1.asp

    oder einfach bei www.codeproject.com nach "gzip files" suchen,
    dann kriegst jede menge von beispielen, vielleicht ist was für dich dabei !

    lg
    pixel

    P.S. ich kann[darf] leider nicht meine rausgeben, aber die ist von dem ersten link geholt! 😞 sorry!


Anmelden zum Antworten