Search code examples
phpuploadzip

PHP file upload and zip on upload


Does anyone know of a good way to upload a file (.mp3 or .wav or .txt or .whatever) and zip this file before being moved to the directory?

So the user uploads a .mp3 file, before this file is moved to the specific directory it will be zipped and then moved.

Please advise.

Thank you


Solution

  • Take a look at the Zip extension:

    http://www.php.net/manual/en/zip.examples.php

    I looked at the code you linked to (it would have been good if you included it in the question) and made a few changes:

    $nameFile = $_FILES['file']['name'];
    $tmpName = $_FILES['file']['tmp_name'];
    $download_folder = './files/';
    
    $zip = new ZipArchive();
    $fileconpress = $download_folder.$nameFile.".zip";
    
    $conpress = $zip->open($fileconpress, ZIPARCHIVE::CREATE);
    if ($conpress === true)
    {
        $zip->addFile($tmpName);
        $zip->close();
        echo $fileconpress."<br/>";
        echo "yess !! Success!!!! ";
    }
    else echo " Oh No! Error";
    

    The important part and likely what's causing your error is $download_folder. You need to define the path of where you want to save the file.

    I also removed the fread(), you can just load the file straight into the zip object with addFile()