我正在尝试在浏览器的新标签页中打开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);
}
答案 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