在php中创建一个程序,它将在新选项卡中打开下载的文件

时间:2017-07-17 11:19:15

标签: php file browser tabs

我是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();
?>

2 个答案:

答案 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;
}