我是php的新手,我必须开发一个程序,它将下载文件并在新标签页中打开该文件。
我制定的代码在下载方面效果很好。
我的问题是如何在新标签中打开此文件?
代码: -
Html code:-
<div class='data' onclick='download(\""+v.name+"\",\""+v.url+"\");'>
Jquery code:
function download(name,url){
//alert('in');
document.location = "download.php?filename="+name+"&url="+url;
}
php call
<?php
/******* Use to download the documents ********************/
$file = $_REQUEST['filename'];
$file_url = $_REQUEST['url'];
$fileext = strtolower(substr(strrchr($file,'.'),1));
if($fileext == 'zip')
{
$contenttype = "application/force-download";
}
else if($fileext == 'pdf')
{
$contenttype = "application/pdf";
}
else
{
$contenttype = "text/plain" ;
}
$uri = 'bbpsadmin/'.$file_url;
header('Content-Description: File Transfer');
header("Content-Type: " . $contenttype);
//header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header("Content-Disposition: attachment; filename=\"" . basename($file) . "\";");
readfile($uri);
exit();
?>
答案 0 :(得分:2)
这会重定向当前标签/窗口:
document.location = "download.php?filename="+name+"&url="+url;
此打开新标签/窗口:
window.open("download.php?filename="+name+"&url="+url);
如果要打开新标签/窗口,只需使用window.open()
即可。 (注意:打开的是选项卡与窗口是用户还是浏览器首选项。)
此外,如果您希望浏览器[尝试]直接打开文件,请从响应中删除此标头:
header("Content-Disposition: attachment; filename=\"" . basename($file) . "\";");
该标题明确告诉浏览器响应是要保存的文件而不是要显示的内容。
答案 1 :(得分:0)
PHP与此无关,所有你可以用php做的只是设置"Content-Disposition"标题以通知浏览器在浏览器内嵌打开资源或作为下载附件。但这与你的问题无关。
更改文档href
或使用window.open
方法无法在新的标签中打开。如果你真的希望它在标签中打开而不是在另一个窗口中打开。您可能需要将div更改为<a>
元素并使用目标'_blank'
更改此
div class='data' onclick='download(\""+v.name+"\",\""+v.url+"\");'>
进入这个
<!-- I copied your onclick HTML code as it is -->
<a id="download" target="_blank" href="" class='data' onclick='download(\""+v.name+"\",\""+v.url+"\");'>link</a>
和这个
function download(name,url){
//alert('in');
document.location = "download.php?filename="+name+"&url="+url;
}
进入这个
function download(name,url)
{
var link = document.getElementById("download");
link.href = "download.php?filename="+name+"&url="+url;
}