2011-02-14 109 views
0

一般來說,瀏覽器顯示圖像和pdf文件時不會將它們嵌入html中。我需要一些代碼來使這些文件不會顯示在瀏覽器中,而是使它們像doc文件一樣可下載。如何下載圖像和pdf文件

請幫我解決這個問題。

+0

以及..如果我們在瀏覽圖片或PDF文件的URL,我們可以看到在瀏覽器中的文件,而無需在HTML中嵌入它們。我不希望這發生。我希望瀏覽時可以下載文件。 – kushalbhaktajoshi 2011-02-14 04:40:10

+0

我刪除了你正在回覆的評論,因爲我已經解決了這個問題,下面有很多例子。 – 2011-02-14 04:42:55

回答

0

試試這個:

$file = 'youfile.fileextention'; 
if (file_exists($file)) { 
    header('Content-Description: File Transfer'); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename='.basename($file)); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($file)); 
    ob_clean(); 
    flush(); 
    readfile($file); 
    exit; 
5

這不取決於你,它取決於瀏覽器。

但是,你可以做一個建議,至於什麼通過設置content-disposition頭用它做什麼...

header("Content-Disposition: attachment; filename=\"yourfilename.pdf\""); 

閱讀文檔的header()功能:http://php.net/manual/en/function.header.php

在這種情況下,ISN不清楚...這是針對PHP文檔返回的任何資源。你可能需要一個readfile()來做你正在做的事情。

2

設置幾個頭:

$filename = ...; 
$mime_type = ...; //whichever applicable MIME type 
header('Pragma: public'); 
header('Expires: 0'); 
header("Content-Disposition: attachment; filename=\"$filename\""); 
header("Content-Type: $mime_type"); 
header('Content-Length: ' . filesize($filename)); 
readfile($filename); 
1
<?php 
header('Content-disposition: attachment; filename=myfile.pdf'); 
header('Content-type: application/pdf'); 
readfile('myfile.pdf'); 
?> 
1

您要發送的內容類型頭,使瀏覽器下載文件。

如果您不是'動態生成它,您需要先從磁盤讀取它。

$fullPath = "/path/to/file/on/server.pdf"; 
$fsize = filesize($fullPath); 
$content = file_get_contents($fullPath); 
header("Pragma: public"); // required 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Cache-Control: private",false); // required for certain browsers 
header("Content-Type: application/pdf"); 
header("Content-Disposition: attachment; filename=\"".basename($fullPath)."\";"); 
header("Content-Transfer-Encoding: binary"); 
header("Content-Length: ".$fsize); 
echo $content;