繁体   English   中英

将压缩文件夹从PHP服务器移动到客户端

[英]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技术。

  1. input type="submit"重命名为input type="button"

  2. 拦截单击您的js代码中的此按钮

  3. 单击后,将浏览器中的ajax请求发布到您的服务器

  4. 在ajax处理功能中,使用此处显示的php代码, 形成表格并返回指向新创建的zip 的链接

  5. 在您的js代码中,在ajax成功函数中,获取此链接并将其显示给用户。

您可以在此处阅读有关如何在WordPress中使用Ajax的详细手册。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM