收到ajax回调后如何在php中取消链接文件

问题描述 投票:0回答:1

为了创建.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
            }

我希望响应和重定向更快,然后从tmp文件夹取消链接。但不幸的是,我不能像在php文件中创建它一样使用unlink

那么如何在响应成功并重定向后取消tmpfolder的链接?我应该在取消链接之前使用某些东西作为延迟吗?

php ajax response unlink
1个回答
2
投票

最简单的选择是废弃Ajax,使用常规表单提交,然后直接输出zip文件作为响应,而不是将文件写入磁盘。

© www.soinside.com 2019 - 2024. All rights reserved.