archive pdf files into zip

This public forum is for user-to-user discussions of PHPMaker. Note that this is not support forum.
Post Reply
lissa
User
Posts: 73

archive pdf files into zip

Post by lissa »

Hi master,
I want to ask.
I have a file field that contains upload multiple pdf files as many as 5 files.
I added a custom field to download the five pdf files into a zip file.
with the following code:

function Row_Rendered()
{
    // To view properties of field class, use:
    //var_dump($this-><FieldName>);
    $this->dowload_all->ViewValue = "<i class='fa fa-file-text'></i>";

    $error = ""; //error holder
    if (isset($_POST["createpdf"])) {
        $post = $_POST;
        $file_folder = "files/" . $this->file->CurrentValue; // folder to load files
        if (extension_loaded("zip")) {
            // Checking ZIP extension is available
            if (isset($post["file"]) and count($post["file"]) > 0) {
                // Checking files are selected
                $zip = new ZipArchive(); // Load zip library
                $zip_name = time() . ".zip"; // Zip name
                if ($zip->open($zip_name, ZIPARCHIVE::CREATE) !== true) {
                    // Opening zip file to load files
                    $error .= "* Sorry ZIP creation failed at this time";
                }
                foreach ($post["file"] as $file) {
                    $zip->addFile($file_folder . $file); // Adding files into zip
                }
                $zip->close();
                if (file_exists($zip_name)) {
                    // push to download the zip
                    header("Content-type: application/zip");
                    header(
                        'Content-Disposition: attachment; filename="' .
                            $zip_name .
                            '"'
                    );
                    readfile($zip_name);
                    // remove zip file is exists in temp path
                    unlink($zip_name);
                }
            } else {
                $error .= "* Please select file to zip ";
            }
        } else {
            $error .= "* You dont have ZIP extension";
        }
    }
}

my code has no errors and doesn't work, can anyone help me with the solution, or am I putting the code in the wrong place?


arbei
User
Posts: 9787

Post by arbei »

Row_Rendered is a server event for the List or View pages, I assume you meant you want to alllow users to download the files previously uploaded in Add or Edit pages.

lissa wrote:

$post = $_POST;
if (isset($post["file"]) and count($post["file"]) > 0) {

The files are already uploaded and saved in the upload path of your field. There is no files in $_POST, you should find your files in the field's upload folder.


lissa
User
Posts: 73

Post by lissa »

Yes, right,
I want the 5 files that have been uploaded to be downloaded by the user in the form of a zip file. can you give advice?


lissa
User
Posts: 73

Post by lissa »

sorry, what I meant was that the file I previously uploaded was a pdf file, when the user wants to download the five pdf files it automatically becomes a zip file


arbei
User
Posts: 9787

Post by arbei »

The case remains the same regardless of uploaded file types. arbei wrote:

you should find your files in the field's upload folder.


Post Reply