簡體   English   中英

PDF文件無法在帶有標題的瀏覽器中打開

[英]PDF file won't open in browser with headers

在發表了許多文章之后,我成功地創建了htaccess和驗證文件來處理通過URL進行的PDF調用。

問題是腳本不輸出PDF文件。 在Firefox中顯示為“ PDF文檔可能無法正確顯示”,而在Chrome中則沒有錯誤,它什么也沒做。

知道為什么嗎?

謝謝

注意:文件夾中存在PDF文件。 禁用htaccess后,我可以直接打開它們。

validation.php

session_start();

//If user not logged in or URL not set then redirect to login page
if (! isset($_SESSION['user']) || ! isset($_GET['request_url']))
{
    session_write_close();

    header ('Location: /login.php');
    exit();
}
//Otherwise
else
{
    //Get request URL from htaccess
    $request_url = $_GET['request_url'];
    //Get file name only
    $filename = basename($request_url);

    //Set headers
    header('Content-type: application/pdf');
    header('Content-Disposition: inline; filename="' . $filename . '"');
    header('Content-Transfer-Encoding: binary');
    header('Content-Length: ' . filesize($request_url));
    header('Accept-Ranges: bytes');

    //Output file content
    @readfile($request_url);

    //Take the log
    $file = 'log.txt';
    $log  = file_get_contents($file);
    $log .= 'URL:' . $request_url . ' - FILE:' . $filename . ' - TIMESTAMP:' . date('d/m/Y H:i:s') . "\n";

    @file_put_contents($file, $log);
}

HTACCESS:

RewriteEngine On
RewriteCond %{REQUEST_URI} \.(pdf)$ [NC]
RewriteRule ^ /validate.php?request_url=%{REQUEST_URI} [L]

從此行中刪除@

@readfile($request_url);

看看你得到什么錯誤。

file_put_contents()具有可選的FILE_APPEND標志,您不必讀取日志內容

$file = 'log.txt';
$log = 'URL:' . $request_url . ' - FILE:' . $filename . ' - TIMESTAMP:' . date('d/m/Y H:i:s') . "\n";
@file_put_contents($file, $log, FILE_APPEND);

用絕對路徑解決。

更換

@readfile($request_url);

@readfile($_SERVER['DOCUMENT_ROOT'] . $request_url);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM