so. nun habe ich mich mal mit dem dynamischen erstellen von zip-dateien befasst. dazu habe ich diese class verwenden.
aber ich würde nicht posten, wenn ich nicht dabei ein kleines problem festgestellt hätte...
im beigefügten bild, kann man sehen, dass bei der datei logo.zip die html- und die gif-datei jeweils 5 byte größer in der komprimierung ist, als in der referenz logo_ref.zip, die ich einfach unter winblows als zip geschrieben habe.
das ganze MUSS auch als unkomprimierten zip sein. nur falls jemand fragen sollte.
die dynamisch erzeugte datei lässt sich auch wunderbar wieder extrahieren. nur warum zum teufel sind da immer 5 byte zuviel?
anbei auch ein wenig code..
aber ich würde nicht posten, wenn ich nicht dabei ein kleines problem festgestellt hätte...
im beigefügten bild, kann man sehen, dass bei der datei logo.zip die html- und die gif-datei jeweils 5 byte größer in der komprimierung ist, als in der referenz logo_ref.zip, die ich einfach unter winblows als zip geschrieben habe.
das ganze MUSS auch als unkomprimierten zip sein. nur falls jemand fragen sollte.
die dynamisch erzeugte datei lässt sich auch wunderbar wieder extrahieren. nur warum zum teufel sind da immer 5 byte zuviel?
anbei auch ein wenig code..
PHP-Code:
<?php
include ($_SERVER['DOCUMENT_ROOT'].'/classes/archives.class.php');
// echo '<pre>';
// print_r($_POST);
// print_r($_FILES);
// echo '</pre>';
if(isset($_POST['text'], $_FILES['bild']) && trim($_POST['text'])!='' && $_FILES['bild']['size']>0 )
{
// neues archiv erstellen.
$flags = array('level' => 0); // keine kompression
$zip = &new zipfile('./', $flags);
// hochgeladene datei auslesen.
$fp = fopen($_FILES['bild']['tmp_name'], 'r');
$data = fread ($fp, $_FILES['bild']['size']);
fclose ($fp);
// bilddatei ins zip eintragen.
$zip->addfile($data, $_FILES['bild']['name']);
// neuen dateinamen ohne endung bestimmen.
$dateiname = substr($_FILES['bild']['name'], 0, strrpos($_FILES['bild']['name'],'.'));
$html = '<IMG SRC="'.$_FILES['bild']['name'].'" />'.$_POST['text'];
// htmldatei ins zip eintragen.
$zip->addfile($html, $dateiname.'.html');
// download initiieren.
$zip->filedownload($dateiname.'.zip');
// script nach download beenden
exit();
}
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post" enctype="multipart/form-data">';
echo 'bilddatei: <input type="file" name="bild"><br />';
echo 'text: <input type="text" name="text" value=""><br />';
echo '<input type="submit" name="" value="senden">';
echo '</form>';
?>
Kommentar