Hallo,
ich habe ein Script geschrieben, was aus der DB mehrere BLOB-Dateien liest und diese dann in ein ZIP-Archiv packt. Doch leider habe ich das Problem, das die PDF-Dateien und die Zip selber auf den Server gespeichert werden. Wie kann ich es aber so gestalten, as die Dateien nicht gespeichert werden.
Hier noch die Funktionen
Gruß, Kalito
ich habe ein Script geschrieben, was aus der DB mehrere BLOB-Dateien liest und diese dann in ein ZIP-Archiv packt. Doch leider habe ich das Problem, das die PDF-Dateien und die Zip selber auf den Server gespeichert werden. Wie kann ich es aber so gestalten, as die Dateien nicht gespeichert werden.
Hier noch die Funktionen
PHP:
public function downloadUserFile($training){
$FileModel =ClassRegistry::init('Registration');
$TrainingsUserModel =ClassRegistry::init('TrainingsUser');
$TrainingModel =ClassRegistry::init('Training');
$UserModel = ClassRegistry::init('User');
//Initialisiert ein Array
$fileArray = array();
//Alle User die an der Schulung teilnehmen
$users = $TrainingsUserModel->find('all', array('conditions'=>array('training_id'=>$training, 'angenommen'=>'1'), 'fields'=>'user_id'));
//Ermittelt Schulungsname
$trainingName = $TrainingModel->find('first', array('filds'=>'name', array('conditions'=>array('id'=>$training))));
foreach($users as $user){
//jeweilige Userdaten
$userdata = $UserModel->find('first', array('conditions'=>array('User.id'=>$user['TrainingsUser']['user_id'])));
//holt Blobdatei
$temp = $FileModel->find('first', array('fields'=>'id' ,'conditions'=>array('user_id'=>$user['TrainingsUser']['user_id'])));
$file = $FileModel->read(null, $temp['Registration']['id']);
$filename = $userdata['User']['firstname'].' '.$userdata['User']['lastname'].'.pdf';
$fileArray[] = $filename;
//generiert die PDF
file_put_contents($filename, $file['Registration']['file']);
}
$filename = $trainingName['Training']['name'].".zip";
//generiert ZIP
$this->makeZip($fileArray, $filename);
//Ausgabe der Zip
header("Content-type: application/zip");
header("Content-Disposition: attachment; filename=$filename");
header("Pragma: no-cache");
header("Expires: 0");
readfile("$filename");
}
private function makeZip($fileArray, $filename){
$zip = new ZipArchive();
$zip->open($filename, ZIPARCHIVE::CREATE);
foreach($fileArray as $file){
$zip->addFile($file);
}
return $zip->close();
}
Gruß, Kalito