2012-04-20 101 views
0

我不理解我一直在閱讀的文檔。任何人都可以解釋如何做到這一點?如何讓php在新選項卡中打開pdf文件?

我有一個HTML鏈接進入函數showFile()。有兩個get,一個id,它是文件名,一個ext,文件的擴展名(只有擴展名是pdf,jpg和gif)。我使用codeigniter framwework btw。

我讀了關於標題的東西,但是當我試着只是下載了文件。任何幫助,將不勝感激。

功能到目前爲止---------

public function showFile() { 
    $fileId = $this->input->get('id'); 
    $fileExt = $this->input->get('ext'); 

} 
+2

您的瀏覽器可能沒有安裝PDF閱讀器,因此下載。如果它以PDF附件形式下載並且不吐出二進制嘔吐物,那麼您的代碼可能正在工作。 – 2012-04-20 21:34:51

回答

2

像這樣的東西在HTML:

<a href="downloadfile.php?filesrc=blah.pdf" target=_new> 
    Click here to download blah.pdf</a> 

這裏當然在href必須是在PHP echo版。

<a href="downloadfile.php?filesrc=<?php echo $filepath ?>" target=_new> ... </a> 

哦,還有downloadfile.php只會有一個header('...');重定向到文件中。

+0

我不希望它下載。我只想在新的瀏覽器窗口中打開。 – 2012-04-20 21:55:10

+0

那就是你怎麼做的......瀏覽器會詢問用戶他們是否想查看它或下載它。 – Ozzy 2012-04-20 22:11:35

2
class Files extends CI_Controller{ 

    public function show_file($id, $ext){ 
     $file_location = ''; 
     switch($ext){ 
      case 'pdf': 
      $file_location = 'location-to_pdf_files'; // store as constant maybe inside index.php - PDF = 'uploads/pdf/'; 

      //must have PDF viewer installed in browser ! 
      $this->output 
      ->set_content_type('application/pdf') 
      ->set_output(file_get_contents($file_location . '/' . $id . '.pdf')); 

      break; 
      //jpg gif etc here... 
     } 

    } 
} 

-

$route['view/(:any)/(:any)'] = 'files/show_file/$1/$2'; 

-

<a href="<?php echo site_url('view/picture/pdf');?>" rel="nofollow" target="_blank">Some_file<a/> 
+0

這看起來應該起作用。如果文件正常下載,它可能是您的瀏覽器。嘗試使用多個瀏覽器。如果您可以在其他網站的標籤中查看pdf,並且它不適用於您的報告。 – 2012-04-22 00:24:00

+0

@AndyGroff耶應該很好工作。 +用戶可以選擇打印或下載PDF,就像你說的,儘管它取決於瀏覽器 – Philip 2012-04-22 00:35:06

相關問題