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 Smile