как отсоединить файл в php после получения обратного вызова ajax - PullRequest
0 голосов
/ 26 февраля 2019

Для создания файла .zip я отправляю ответ обратно в ajax.

Мой php

// Multiple download (checkboxes)
if(isset($_POST["checkboxes_down"])) { 

    // create a tmp folder for the zip file
    $tmpfolder = $MainFolderName.'/tmpzip';
    if (!is_dir($tmpfolder)) {
         mkdir($tmpfolder, 0755, true);
    }

    $checkboxfiles = explode("," , $_POST["checkboxes_down"]); 
    $filename = "archive.zip";
    $filepath = $tmpfolder."/";

    foreach($checkboxfiles as $checkboxfile) {              
        Zip($checkboxfile, $tmpfolder."/archive.zip");
    }   

    // send the path to file back as response
    echo $filepath.$filename;

    unlink($tmpfolder.'/archive.zip'); // unlink archive.zip            
    rmdir($tmpfolder); // remove tmpdir
    exit;

}

Мой jquery ajax:

 $.ajax({  
            url:"",                                 
            method:"POST",  

            data:{ checkboxes_down:checkboxes_down },  
            success:function(response){                                 
               window.location = response; // redirec to .zip file for download
            }

Iнадеялся, что ответ и перенаправление были быстрее, чем отсоединение от tmpfolder.Но, к сожалению, я не могу использовать unlink так, как я создал его в файле php.

Так, как я могу отсоединить tmpfolder после того, как ответ успешен и перенаправлен? Должен ли я использовать что-то в качестве задержки перед отсоединением?

1 Ответ

0 голосов
/ 26 февраля 2019

Самый простой вариант - удалить Ajax, использовать регулярную отправку формы, а затем вывести zip-файл непосредственно в качестве ответа вместо записи файла на диск.

...