【发布时间】:2018-03-15 12:04:57
【问题描述】:
我有一个重力表单,用户可以在其中设置复选框来选择要下载的文件。对于增强的 UX,表单是多页的并使用 AJAX。
使用以下 PHP 函数和 Gravity Forms Hook,我能够循环选中复选框并将文件添加到 ZIP 存档中,但目前无法开始下载。
add_filter( 'gform_after_submission_3', 'download_brochures_message', 10, 4 );
function download_brochures_message( $entry ) {
$confirmation = "Your download should begin shortly. \r\n";
$error = "Files not set \r\n";
$file1 = rgar( $entry, '1.1' );
$file2 = rgar( $entry, '1.2' );
$file3 = rgar( $entry, '1.3' );
$file4 = rgar( $entry, '1.4' );
$files = array(
$file1,
$file2,
$file3,
$file4
);
print_r($files);
$zip = new ZipArchive();
$current_time = time();
$file_folder = wp_upload_dir();
$dir = $file_folder['path'];
$zip_file = tempnam( $dir, time() );
$zip->open( $zip_file, ZipArchive::CREATE );
foreach ($files as $file) {
$zip->addFile($file);
}
$zip->close();
echo $zip_file;
header('Content-disposition: attachment; filename="'.$zip_name.'"');
header('Content-type: application/zip');
header('Content-Length: ' . filesize($zip_file));
header("Location: $zip_file");
readfile($zip_file);
}
由于表单通过 AJAX 提交,页面标题已经发送,我收到的 PHP 错误是“无法修改标题信息 - 标题已发送”。如何修改此代码以允许 zip 下载?
【问题讨论】:
-
您找到解决方案了吗?我正在尝试做同样的事情
-
@ConorBaumgart 是的 - 我最终找到了一个解决方案,我会尽快将其作为答案发布给您。完全忘记了我发布了这个问题,因为它没有看到任何活动!
-
@ConorBaumgart 嘿伙计,我已经在下面发布了我的答案/解决方案!
标签: php jquery ajax wordpress gravity-forms-plugin