[英]Move Zipped Folder from PHP Server to Client
我正在使用Wordpress。 我创建了一个表单,用户可以在其中检查要包含在压缩文件夹中的文件,并在服务器上创建包含这些文件的文件夹。
我的问题是如何将这个新创建的压缩文件夹移动到客户端? 我希望用户能够选择该文件夹在客户端上的下载位置。
的HTML
<form method="post">
<input type="checkbox" name="checked[]" value="<?php echo $path; ?>">
<input type="submit" name="download" value="Download Selected">
</form>
的PHP
if(isset( $_POST['download'] ) && !empty($_POST['checked']) ){
$files = $_POST['checked'];
$zip = new ZipArchive();
$zip_name = time().".zip"; // Zip name
$zip->open($zip_name, ZipArchive::CREATE);
$full = wp_upload_dir();
$base = $full['baseurl'] .'/';
if (is_array($files)){
foreach ($_POST['checked'] as $file) {
echo $full_path = $file;
echo $_SERVER['DOCUMENT_ROOT'] . $full_path;
if(file_exists($_SERVER['DOCUMENT_ROOT'].'/bcg/wp-content/uploads/'.$full_path)){
$zip->addFromString(basename($base . $full_path), file_get_contents($base . $full_path));
echo 'file exists';
bcg_download_function($zip_name);
}
else{
echo"file does not exist";
}
}
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zip_name);
header('Content-Length: ' . filesize($zip_name));
readfile($zip_name);
$zip->close();
}
}
您需要使用ajax技术。
将input type="submit"
重命名为input type="button"
拦截单击您的js代码中的此按钮
单击后,将浏览器中的ajax请求发布到您的服务器
在ajax处理功能中,使用此处显示的php代码, 形成表格并返回指向新创建的zip 的链接
在您的js代码中,在ajax成功函数中,获取此链接并将其显示给用户。
您可以在此处阅读有关如何在WordPress中使用Ajax的详细手册。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.