ZIP von anderem Server downloaden und entpacken

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • ZIP von anderem Server downloaden und entpacken

    Wie der Titel schon sagt, wie mache ich das?
    Habe bis jetzt:

    Warning: zip_read() expects parameter 1 to be resource, integer given in /www/htdocs/s/hcl/wget.php on line 9
    Warning: zip_close() expects parameter 1 to be resource, integer given in /www/htdocs/s/hcl/wget.php on line 34


    Quellcode

    1. <?php
    2. error_reporting(E_ALL);
    3. $ZipPointer = zip_open(file_get_contents("http://gruessung-online.de/WDWIP_Screensaver.zip"));
    4. if($ZipPointer)
    5. {
    6. while($GezippteDatei = zip_read($ZipPointer))
    7. {
    8. echo"Dateiname: ",
    9. zip_entry_name($GezippteDatei),
    10. "<br>",
    11. "Dategröße: ",
    12. zip_entry_filesize($GezippteDatei),
    13. " Bytes<br>",
    14. "Komprimierte Größe: ",
    15. zip_entry_compressedsize($GezippteDatei),
    16. " Bytes<br>",
    17. "Komprimierungsverhältnis: ",
    18. round((1-(zip_entry_compressedsize($GezippteDatei)/zip_entry_filesize($GezippteDatei)))*100, 1),
    19. "%<br><br>";
    20. if(zip_entry_open($ZipPointer, $GezippteDatei, "r"))
    21. {
    22. $FilePointer = fopen(zip_entry_name($GezippteDatei), "w");
    23. fwrite($FilePointer, zip_entry_read($GezippteDatei, zip_entry_filesize($GezippteDatei)));
    24. fclose($FilePointer);
    25. zip_entry_close($GezippteDatei);
    26. }
    27. }
    28. zip_close($ZipPointer);
    29. }
    30. show_source(__FILE__);
    31. ?>
    Alles anzeigen
  • Ich kenne mich damit nicht gut aus, doch laut der PHP.net Doku muss fuer zip_open() als erstes Argument der Dateiname angegeben werden.
    Da du hier direkt schon den Inhalt angibst (durch file_get_contents()), gibt zip_open() als Rückgabewer warscheinlich nen Fehlercode oder so als integer (Siehe deine Fehlermeldung) zurück anstelle des für zip_read() benötigten streams.

    Wenn zip_open() intelligent ist, wovon ich ausgehe, kannst du auf das file_get_contents(..) verzichten und direkt deine URL als erstes Argument angeben.

    Ansonsten tust du folgendes:
    1.Datei herunterladen
    2.Speichern als xyz.zip im temp ordner
    3.mit zip_open xyz.zip aus dem temp ordner öffnen
    4.Verarbeiten

    Gut, kann man auch anders lösen, doch wäre das der einfachste Weg.

    Das sind aber nur Vermutungen, doch villeicht hilfts ja.

    MfG Nicoh
  • Man sollte schon versuchen vorher den Fehler selber zu lösen bzw. versuchen eine lösung im internet zu finden...
    Selbst auf php.net findet man die lösung.


    If you get an error like this:

    Warning: zip_read() expects parameter 1 to be resource, integer given in xxxxxx on line x

    It's because zip_open() failed to open the file and returned an error code instead of a resource. It took me a while to figure out why it failed to open the file, until I tried to use the FULL path to the file.

    Quellcode

    1. <?php
    2. // Even if the file exists, zip_open() will return an error code.
    3. $file = 'file.zip';
    4. $zip = zip_open($file);
    5. // The workaround:
    6. $file = getcwd() . '/file.zip';
    7. // Or:
    8. $file = 'C:\\path\\to\\file.zip';
    9. ?>
    Alles anzeigen


    This worked for me on Windows at least. I'm not sure about other platforms.

    de3.php.net/manual/de/function.zip-read.php#78140

    Hatte damals den selben fehler und hab mich tot gesucht.. naja ^^

    Ansonsten ginge es auch bei einem unix server so:

    Quellcode

    1. <?php
    2. system("unzip -d <file>");
    3. ?>