Pdf未在新标签中打开,显示codeigniter中的错误

时间:2018-02-06 10:05:29

标签: php codeigniter pdf

我正在尝试在浏览器的新标签页中打开pdf但显示错误请帮助我。

public function show_pdf($fileName)
{
    header("Content-Length: " . filesize (realpath ( "assets\documents" ) . "\\" . $fileName) ); 
    header("Content-type: application/pdf"); 
    header("Content-disposition: attachment;     
    filename=".realpath ( "assets\documents" ) . "\\" . $fileName);
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    readfile(realpath ( "assets\documents" ) . "\\" . $fileName);
}

enter image description here

1 个答案:

答案 0 :(得分:0)

我正在创建一个执行相同操作的应用程序,该文件位于服务器上的某个位置(唯一文件名),并且我调用带有文件名的文件

在视图中

<a href="<?=base_url()?>SomeControllerForFiles/someMethod/<?=$filename?>"></a>

在控制器

function showThePDF($filename){
//if ur $filename contains the full path
//then $path = $filename
$path = '/THE/DIRECTORY/WHERE/FILE/EXIST/' . $filename;
    header('Content-Length: ' . filesize($path));
    header("Content-type: application/pdf");
    header("Content-disposition: inline; filename=$filename");
    readfile($path);
}

到目前为止效果很好。 在这种情况下,它是在apache下的linux服务器上,如果你使用的是windows服务器,你可以获得包含DiscLetter:\\full_file_path.pdf

等路径的文件

如果您将文档保存在public_html文件夹中,您可以访问带有类似

的链接的文档

<a href="<?= base_url().'/documents_folder/'.$filename ?>">Let's see that file</a>

在最后一种情况下,任何人都可以访问它,因为它位于public_html文件夹中。

并且重要无论您是在public_html文件夹中分配文件还是/SOMEWHERE/IN/THE/SERVER readfile($path)上的文件路径始终需要它应该是完整路径就像

在服务器中的某个位置

/THIS/IS/THE_FOLDER/this_is_my_file.pdf

C:\\THIS\IS\THE\FOLDER\this_is_my_file.pdf

用于链接public_html文件夹上的文件

href = "http://this.is.my.page.com/assets/documents/this_is_my_file.pdf"

希望我的回答可以帮助您找到$fullpath:D