Mijn vraag
Hoi, ik werk aan een applicatie waarbij er een groot aantal foto's direct in de database zijn opgeslagen. Niet mijn keuze, maar opzich prima te doen zou je zeggen. Ik heb dus een tabel met id, fotonaam, datum en een string, de foto zelf dus.
Als ik deze string op het scherm tover en de juiste headers meestuur, dan krijg ik inderdaad netjes de betreffende foto te zien. De data zit dus goed opgeslagen in de db.
Mijn probleem is dat ik nu een exportfunctie probeer te maken om alle foto's van een project in 1 zipbestand te kunnen exporteren. Hieronder de code, denk dat die redelijk straightforward is zo:
Hiermee krijg ik inderdaad een download aangeboden, een zipfile met daarin alle foto's. De foto's bevatten allemaal de juiste data (niet 0 bytes ofzo). Als ik echter een dergelijke foto unzip en open, dan kan die niet worden weergegeven. Niet in paint, zelfs niet in chrome (die de versie direct op het scherm wel goed toont). Grrr dus.
Iemand enig idee? Moet er nog een soort header boven de data oid?
Hoi, ik werk aan een applicatie waarbij er een groot aantal foto's direct in de database zijn opgeslagen. Niet mijn keuze, maar opzich prima te doen zou je zeggen. Ik heb dus een tabel met id, fotonaam, datum en een string, de foto zelf dus.
Als ik deze string op het scherm tover en de juiste headers meestuur, dan krijg ik inderdaad netjes de betreffende foto te zien. De data zit dus goed opgeslagen in de db.
Mijn probleem is dat ik nu een exportfunctie probeer te maken om alle foto's van een project in 1 zipbestand te kunnen exporteren. Hieronder de code, denk dat die redelijk straightforward is zo:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| if ( $_POST['data'] == "fotos"){ $zipname = "fotos.zip"; $content = $prj->get_fotos($_GET['id']); if ( count($content) > 0 ){ $zip = new ZipArchive; $res = $zip->open($zipname, ZipArchive::CREATE); if ($res === TRUE) { foreach ( $content as $kcontent=>$vcontent){ $zip->addFromString($return['prj']['nummer'] . "_" . $vcontent['traject'] . "_" . $vcontent['datum'] . "_foto.jpg", $vcontent['data']); } $zip->setArchiveComment('Export gemaakt op ' . date("d-m-Y H:i") . " door " . $_SESSION['user_info']['name']); $zip->close(); header('Content-Type: application/zip'); header('Content-disposition: attachment; filename='.$zipname); header('Content-Length: ' . filesize($zipname)); readfile($zipname); unlink($zipname); } else { $return['feedback'] = array("type"=>"error", "text"=>"Kon zipbestand niet aanmaken. Disk vol?"); } } else { $return['feedback'] = array("type"=>"error", "text"=>"Geen fotos gevonden"); } } |
Hiermee krijg ik inderdaad een download aangeboden, een zipfile met daarin alle foto's. De foto's bevatten allemaal de juiste data (niet 0 bytes ofzo). Als ik echter een dergelijke foto unzip en open, dan kan die niet worden weergegeven. Niet in paint, zelfs niet in chrome (die de versie direct op het scherm wel goed toont). Grrr dus.
Iemand enig idee? Moet er nog een soort header boven de data oid?