我解决了问题。我分两步完成。首先,我使用 ajax 将基本 url 和 url 参数发送到本地服务器上的 php 脚本。使用 jQuery 很容易做到:
jQuery.ajax({
type : "POST",
url : './includes/php/userdata.php',
data: { method: 'get_print_version',
url: base_url,
parameter: query_parameter,
num: num_parameter },
error: function(error) {
console.log("Print version failed");
},
success: function(reault) {
console.log("What is the result?");
}
});
服务器脚本使用 cURL 将数据发送到最终服务器。因此,基本 url 和参数不会作为一个 url 发布,而是通过使用 CURLOPT_POST 和 CURLOPT_POSTFIELDS 分开。可以使用 file_put_contents 将服务器响应(pdf)写入文件。如果 PDF 变大,您将在此处收到内存限制错误。比将 cURL 的答案直接写入 pdf 文件更好。
if ($_method == 'get_print_version')
{
$url = $_REQUEST['url'];
$parameter = $_REQUEST['parameter'];
$num = $_REQUEST['num'];
$post = curl_init();
curl_setopt($post, CURLOPT_URL, $url);
curl_setopt($post, CURLOPT_POST, $num);
curl_setopt($post, CURLOPT_POSTFIELDS, $parameter);
/* write calendar directly to file */
$pdf = fopen('./Calendar.pdf', 'w');
curl_setopt($post, CURLOPT_FILE, $pdf);
curl_exec($post);
curl_close($post);
echo $result;
}