WordPress — Переместить Zip-папку с PHP-сервера на клиент

Я использую WordPress. Я создал форму, в которой пользователи проверяют, какие файлы должны быть включены в заархивированную папку, и на сервере создается папка с файлами.

У меня вопрос, как мне перенести эту вновь созданную zip-папку на клиент? Я хотел бы, чтобы пользователь мог выбрать, где на клиенте также загружается папка.

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();
}
}

0

Решение

Вам нужно использовать технологию AJAX.

  1. Переименуй свой input type="submit" в input type="button"

  2. Перехватить нажмите на эту кнопку в вашем коде JS

  3. По клику, отправьте запрос ajax из браузера на ваш сервер

  4. В функции обработки ajax используйте код php, показанный здесь, сформировать и вернуть ссылку на вновь созданный почтовый индекс

  5. В вашем js-коде, в функции успеха ajax, получите эту ссылку и покажите ее пользователю.

Вы можете прочитать подробное руководство по использованию ajax в WordPress. Вот.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]