2013-03-14 4 views
0

У меня возникли трудности с попыткой просмотра pdf-файла за пределами папки webroot.CodeIgniter - ошибка при попытке просмотреть загруженные pdf-файлы

Это файл вида - я захватываю идентификатор файла из URL-адреса и затем запрашиваю db, чтобы получить всю информацию о файле, сохраненную из загрузки.

 $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); 

     } 

Проблема заключается в том, когда я нажимаю на ссылку, чтобы открыть новую вкладку, и попытаюсь отобразить файл, я получаю следующую ошибку:

File does not begin with '%PDF-'.

Файл находится в 777 правах доступа к каталогам под названием uploads прямо за пределами webroot. Я был повсюду в Интернете, и, кажется, существует несколько методов для отображения pdf-файла, ни один из которых, похоже, не работает для меня , Любая помощь будет оценена по достоинству. Благодаря!

+0

Похоже, проблема связана не с файлом, а с его браузером. http://file-repair.blogspot.ca/2012/01/how-to-solve-pdf-file-error-message.html –

ответ

0

Решение: Проблема заключалась в том, что я пропускал страницу header_view в контроллере до раздела $this->load->view('file_viewer_view');.

Средство просмотра PDF пыталось проанализировать header_view перед кодом header('Content-Type: application/pdf') в файле file_viewer_view и тем самым генерировать ошибку.

Я удалил все с контроллера до $this->load->view('file_viewer_view');, и он работает как чемпион!

Надеюсь, это спасет человека несколько часов, ударяя головой о стену, как я пережил!

Смежные вопросы