我有一个 PHP 函数,它在单击按钮后下载不同的文件(如果我们单击 PDF 按钮,它将加载一个 pdf 文件,如果我们单击 DOC 按钮,它将加载一个 doc 文件)。两个按钮的功能相同。
我的问题是当我下载文件时。如果是PDF,IE会打开另一个页面,然后关闭它并让我选择下载文件,但如果是DOC,IE会打开另一个页面,而不是关闭它。
代码(对我来说)是一样的,我看不出有任何区别。
<pre>
<code>
public function lettrecadrageAction() {
$nom = $_POST['type'];
switch ($nom):
case 'Fichier DOC' :
$path = "ddl/lettre_de_cadrage.doc";
header('Content-Description: File Transfer');
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=lettre_de_cadrage.doc");
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($path));
ob_clean();
flush();
readfile($path);
break;
case 'Fichier PDF' :
$path = "ddl/lettre_de_cadrage.pdf";
header('Content-Description: File Transfer');
header('Content-Type: application/force-download');
header("Content-Disposition: attachment; filename=lettre_de_cadrage.pdf");
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($path));
ob_clean();
flush();
readfile($path);
break;
endswitch;
exit;
}
</code>
</pre>
点击的 Js 动作
<pre>
<code>
$('.ldc_dl').click(function() {
var f = document.createElement("form");
f.method = "POST";
f.name = "form";
f.target = "_blank";
f.setAttribute('style', 'display: none;');
f.action = "http://" + document.domain + "/Exploitation/lettrecadrage/";
var fHtml = document.createElement("input");
fHtml.type = "text";
fHtml.name = "type";
fHtml.value = $(this).html();
console.log(fHtml);
var fSubmit = document.createElement("input");
fSubmit.type = "submit";
f.appendChild(fHtml);
f.appendChild(fSubmit);
document.body.appendChild(f);
f.submit();
document.body.removeChild(f);
return true;
}) </code>
</pre>
按钮的 HTML 代码
<pre>
<code>
<div class="tab-pane fade" id="ldc">
<p>La lettre de cadrage est disponible en <button id="ldc_dl_doc" class="btn btn-link ldc_dl" type="button">Fichier DOC</button></p>
<p> Ou en <button id="ldc_dl_pdf" class="btn btn-link ldc_dl" type="button">Fichier PDF</button></p>
</div>
</code>
</pre>
(按钮是“Fichier PDF”和“Fichier DOC”)
编辑 - 解决方案
在评论中 jbl 的帮助下,我使用 iframe 解决了我的问题:
var frame = document.createElement("iframe");
frame.setAttribute("src", "_blank");
并修改我的表单目标
f.target = frame;