Hej
Jeg har efterhånden i 2 uger brugt min fritid på at finde en løsning på mit php problem.
Problemet kort:
Jeg skal zippe nogle filer server side og sende dem til brugeren når vedkommende klikker på et link.. det virker 100% på PC. Men ikke på mac. Når mac udpakker .zip filen, kommer der en .cpgz fil ud, som fylder fuldstændig det samme som .zip filen.
se her:

PC Zip, har det noget at sige?
Her er min kode med php egen zip class zipArchive:
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | <?php function makeZip($imgArr, $priceArr) { // START ZIP FILE $zip = new ZipArchive(); // folder $dir = "zip/files/"; // array count $arrCount = 1; $arrPriceCount = 1; // naming the zip file $today = date("d_F_y"); $archive_file_name= 'download' . $today . '.zip'; if ($zip->open($archive_file_name, ZIPARCHIVE::CREATE )=== TRUE) { // reset product informations.. $output = ""; foreach($productList as $product) { $price = ''; $price = $priceArr[$arrPriceCount]; $arrPriceCount++; $output .= 'Name: ' . "\r\n" . $product->getName() . "\r\n" . "\r\n"; $output .= 'Item ID: ' . "\r\n" . $product->getSku() . "\r\n" . "\r\n"; $output .= 'Description: ' . "\r\n" . $product->getDescription() . "\r\n" . "\r\n"; $output .= 'Price: ' . "\r\n" . $price . "\r\n"; // CREATE FILES // rename product name $_fra = $product->getName(); $_replacers = array(" ", "-", "!", ":", ";", "#", "@", "'", "æ", "ø", "å", "Æ", "Ø", "Å", "Ã", "¸", "¥", "¦", "†", "˜", "...", "/"); $filename = str_replace($_replacers, "_", $_fra); // Image files $imagePath = $dir . $filename . ".jpg"; $file = $imgArr[$arrCount]; if (!copy($file, $imagePath)) { echo "failed to copy $file...\n"; } $imageName = $filename . "_highres.jpg"; $zip->addFile($imagePath,$imageName); $arrCount++; $imagePathSmall = $dir . $filename . "small.jpg"; $file_small = $imgArr[$arrCount]; if (!copy($file_small, $imagePathSmall)) { echo "failed to copy $file...\n"; } $imageNameSmall = $filename . "_lowres.jpg"; $zip->addFile($imagePathSmall,$imageNameSmall); $arrCount++; // TXT FILE ! $txtpath = $dir . $filename . ".txt"; $strlength = strlen($output); $create = fopen($txtpath, "w"); $write = fwrite($create, $output, $strlength); $close = fclose($create); $textFileName = $filename . ".txt"; $zip->addFile($txtpath,$textFileName); } } $zip->close(); header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header("Content-Type: application/zip"); header("Content-Disposition: attachment; filename=".basename ($archive_file_name).";" ); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($archive_file_name)); readfile($archive_file_name); // delete temporary content @unlink($archive_file_name); if($bib = @opendir($dir)) { while (false !== ($fil = readdir($bib))) { if($fil != "." && $fil != ".." && !ereg("^\..+", $fil)) { unlink($dir."/".$fil); } } closedir($bib); } } ?> |
Skyd løs med mulige løsninger. Alt kan hjælpe mig ![]()