File oder dir vor dem Download zippen

B

Bgag

Abend!
Ich möchte eine Datei oder ein Verzeichnis vor dem Download zippen, ohne dass die zip-Datei gespeichert wird. Das habe ich so gemacht:
PHP:
<?php
error_reporting(E_ALL); 

function zip_file($path)
{
	$path_info = pathinfo($path);
	$file = $path_info['basename'];
	$file = current(explode(".",$file));
	echo $file.'<br />';
	
	if (file_exists($path))
	{	
		if (@system('zip '.$file.$path))
		{
			return true;
		}
		
		else if (@exec('zip '.$file.'.zip '.$path))
		{
			return true;
		}
		
		else
		{
			// Could not zip entry
			return false;
		}
		
	}
	
	else
	{
		// Entry does not exist
		return false;
	}
}

$path = 'files/pix/Thumbs.db';
zip_file($path);
?>
Leider funktioniert das ganze nicht und ich erhalte keine Fehlermeldungen. Kann mir jemand sagen, wo mein fehler liegt?
MfG, Andy
 
wenn du @system oder @exec machst, bekommst du keine meldung ob es klapt oder nicht ;)

und noch was... lass es doch einfach OHNE system & exec zippn
lass den Content als GZ-file encoden und dann den browser über headers eine tar.gz vortäuschen....

MfG
 
wenn du @system oder @exec machst, bekommst du keine meldung ob es klapt oder nicht ;)
Ich weiß ich hab es nur mit gepostet, aber ohne getestet.
und noch was... lass es doch einfach OHNE system & exec zippn
lass den Content als GZ-file encoden und dann den browser über headers eine tar.gz vortäuschen....
Sorry kannste mir ein Beispiel zeigen oder mir den Link zu einem Tutorial geben, ich versteh grad nur Bahnhof. Liegt vielleicht daran, dass ich grade erst aufgestanden bin?! :confused:
 
ist kein prob ^^

also hiermit codest du ein string(oder auch datei-inhalt ;) ) als comprimierte tar.gz
-> http://de.php.net/manual/de/function.gzcompress.php

dann dann einfach machen, und via
header();
den browser vortäuschen es wäre eine tar.gz ^^


EDIT:
Code:
Beispiel 2501. Creating a gzip file
<?php
$data = implode("", file("bigfile.txt"));
$gzdata = gzencode($data, 9);
$fp = fopen("bigfile.txt.gz", "w");
fwrite($fp, $gzdata);
fclose($fp);
?>
 
Zuletzt bearbeitet:
Ich habs jetzt wie folgt gemacht, da gzencode gleich die header infos setzt.
PHP:
<?php
	function zip_file($path)
	{
		$path_to = dirname($path);
		$file = basename($path);
		$file = current(explode(".",$file));
		echo $file.'<br />';
		
		if (file_exists($path))
		{	
			if (@system('zip '.$path_to.'/'.$file.$path))
			{
				return true;
			}
			
			else if (@exec('zip '.$path_to.'/'.$file.'.zip '.$path))
			{
				return true;
			}
			
			else if (@file_put_contents($path_to.'/'.$file.'.gz', @gzencode(@file_get_contents($path),9)))
			{
				return true;
			}
			
			else
			{
				echo 'Could not zip entry.';
				return false;
			}
			
		}
		
		else
		{
			echo 'Entry does not exist.';
			return false;
		}
	}
	
	$path = 'files/pix/cursor.gif';
	zip_file($path);
?>
MfG, Andy
 
Natürlich geht das wieso auch nicht. Ich mach ja nicht aus einem zip ein gz. Sondern wenn ich kein zip erstellen kann erstelle ich ein gz. Man gann es natürlich auch abkürzenm und gleich ein gz machen. Oo
 
Zurück