如何在收到 ajax 回调后取消链接 php 中的文件
how to unlink file in php after ajax callback is received
为了创建 .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;
}
我的jqueryajax:
$.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
?我应该在取消链接之前使用一些东西作为延迟吗?
最简单的选择是废弃 Ajax,使用常规表单提交,然后直接输出 zip 文件作为响应,而不是将文件写入磁盘。
为了创建 .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;
}
我的jqueryajax:
$.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
?我应该在取消链接之前使用一些东西作为延迟吗?
最简单的选择是废弃 Ajax,使用常规表单提交,然后直接输出 zip 文件作为响应,而不是将文件写入磁盘。