2015-03-31 30 views
1

我創建了一個檔案頁面來查看成員信息的一個信息是他/她的檔案。我可以管理查看有開放或下載選項的窗口,但我有兩個問題:如何從數據庫打開一個文件在php

1-在Chrome打開選項劑量不出現我只有下載選項。

2-我無法在chrome和Firefox中打開或下載cv,文件名將與打開或保存窗口中的服務器名稱一起顯示。

這裏是我的代碼: PHP:

if(isset($_GET['cv'])) 
{ 
    $id = $_GET['cv']; 

    $query = "SELECT `fileName`, `fileType`, `fileSize`, `fileContent` FROM `boardteam` WHERE `nationalID` = '$id'"; 

    $r = mysql_query($query) or die('Error, query failed'); 

    list($fname, $ftype, $fsize, $fcontent) = mysql_fetch_array($r); 
    header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document'); 
    header("Content-Disposition: attachment; filename=$fname"); 
    header('Content-Length: ' . filesize($fsize)); 
    ob_clean(); 
    flush(); 
    readfile($fname); 
    exit; 
} 

HTML:

<a href='browseMember.php?cv=<?php echo $member_id?>'> 
<?php 
    $q = "SELECT `fileName`, `fileType`, `fileSize`, `fileContent` FROM `boardteam` WHERE `nationalID` = '$member_id'"; 

    $r = mysql_query($q) or die('Error, query failed'); 

    list($fname, $ftype, $fsize, $fcontent) = mysql_fetch_array($r); 
    if ($fname) 
     { 
     echo "click here to open member CV"; 
     } 
?> 
</a> 

UPDATE:

讓我們假設CV文件類型的docx,如果一切正常,我會切換到案件doc和pdf並更改內容類型。

+0

試試這個 [1]:http://stackoverflow.com/questions/4346117/how-can-i-view -open-a-word-document-in-my-browser-using-php-or-html – 2015-03-31 06:04:23

+0

實際上你的問題是什麼? – 2015-03-31 06:05:07

+0

http://stackoverflow.com/questions/1251956/is-there-a-pdf-parser-for-php – Ghostman 2015-03-31 06:05:16

回答

0

這是因爲您的內容類型設置。當它是二進制文件時,您的瀏覽器不知道該打開文檔的應用程序。嘗試使用更具描述性的內容類型來更改內容類型,以便瀏覽器選擇適當的應用程序。例如對於PDF,它將是application/x-pdf。其他人請參閱MIME Media type directory

+0

我把它改爲application/msword for doc文件但是它仍然打開一個下載窗口:( – Learner 2015-03-31 06:55:36

+0

它是一個doc還是一個docx?docx文件是gzip文件。先用PDF先試試看它是否有效。 – Rasika 2015-03-31 11:16:41

+0

我允許doc,docx和pdf,沒有任何工作,因爲我想甚至現在我試圖PDF MIME內容類型瀏覽成員檔案誰是簡歷是PDF格式它仍然給我一個窗口,選擇在哪裏下載該pdf: – Learner 2015-03-31 12:53:19

0

你是正在尋找這樣的事情:

因爲,你只需要在瀏覽器中打開它的話,它應該爲你工作。

請將您的目錄名稱替換爲YOUR_DIRECOTRY_WHERE_FILE_IS_PRESENT_PHYSICALY,您的目錄名稱是文件文件實際存在的地方。

browseMember.php代碼將是這樣的:

<?php 
if(isset($_GET['cv'])) 
{ 
    $id = $_GET['cv']; 

    $query = "SELECT `fileName`, `fileType`, `fileSize`, `fileContent` FROM `boardteam` WHERE `nationalID` = '$id'"; 

    $r = mysql_query($query) or die('Error, query failed'); 

    while ($rowDoc = mysql_fetch_array($r)){ ?> 
    <div id="wrapper"> 
     <div><a href="YOUR_DIRECOTRY_WHERE_FILE_IS_PRESENT_PHYSICALY/<?=$rowDoc['fileName']; ?>" target="_blank" class="text_2" style="text-decoration:none;" ><strong><? echo($row_pdf['fileName']);?></strong></a></div> 
    </div> 
<?php 
echo "<br />"; 
     } 
    } 
?> 
+0

儘管我添加了「docx」的情況:$ ctype =「application/vnd.openxmlformats-officedocument.wordprocessingml.document」; break;它仍然會問下載地址:「( – Learner 2015-03-31 07:30:04

+0

請參閱已編輯的答案,您應該使用您的代碼。 – 2015-03-31 07:30:48

+0

我在CV中存儲的CV不在系統文件中! – Learner 2015-03-31 08:39:21

相關問題