0

webroot フォルダの外にある PDF ファイルを表示しようとすると、うまくいきません。

これはビュー ファイルです。URL からファイル ID を取得し、データベースにクエリを実行して、アップロードから保存されたすべてのファイル情報を取得します。

     $fid = $_GET['fid'];
$query = $this->db->query("SELECT * FROM files WHERE FID = $fid");
    $fileinfo = $query->result();
    foreach ($fileinfo as $row)
    {


    $fname = $row->file_name;
    $ftype =  $row->file_type;
    $fpath =  $row->file_path;
    $full_path = $row->full_path;
    $raw_name = $row->raw_name;
    $client_name = $row->client_name;
    $file_ext = $row->file_ext;
    $file_size =  $row->file_size;
    $is_image = $row->is_image;
    $width =  $row->image_width;
    $height = $row->image_height;
    $img_type =  $row->image_type;
    $img_size =  $row->image_size_str;
    $orig_name = $row->orig_name;
    $created =  $row->created;

    }

次に、その情報を取得し、次を使用して File_viewer_model に渡します。

    $this->load->model('File_viewer_model');

    $this->File_viewer_model->getFileInfo($fname,$ftype);

データを受け取るモデルの関数は次のとおりです。

function getFileInfo($fname,$ftype){


   $path = '/home/sitename/uploads/' . $fname;


header('Content-Type: ' . $ftype);
header('Content-Length: ' . filesize($path));

readfile($path);

        }

問題は、リンクをクリックして新しいタブを開いてファイルを表示しようとすると、次のエラーが発生することです。

ファイルが '%PDF-' で始まっていません。

ファイルは、webroot のすぐ外側にある uploads と呼ばれる 777 パーミッション ディレクトリにあります。どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

0

解決済み: 問題は、セクションの前にコントローラーで header_view ページを渡していたこと$this->load->view('file_viewer_view');です。

PDF ビューアは、file_viewer_view 内のheader('Content-Type: application/pdf')コードの前に最初に header_view を解析しようとしたため、エラーが生成されました。

以前のコントローラーからすべてを取り外したところ$this->load->view('file_viewer_view');、チャンピオンのように機能します!

願わくば、これにより、私が経験したように頭を壁にぶつける数時間の節約になることを願っています!

于 2013-03-15T14:49:19.020 に答える