2015-03-31 2 views
1

Я создал страницу профиля, чтобы просмотреть информацию о членах одной из информации, это его/ее cv. Я мог бы управлять просмотром окна с открытыми или загружаемыми опциями, но у меня есть две проблемы:Как открыть файл с db в php

1- в опции открытия открытого ключа Chrome не отображается. У меня есть только опция загрузки.

2- Я не могу открыть и загрузить cv как в Chrome, так и в Firefox, имя файла отображается с именем сервера в открывшемся или сохраненном окне.

Вот мой код: 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:

Давайте предположим, что тип резюме файла DOCX, если он работает, я переключится на случай doc и pdf и изменить тип контента.

+0

попробовать это [1]: http://stackoverflow.com/questions/4346117/how-can-i-view -open-a-word-document-in-my-browser-using-with-php-or-html –

+0

Что на самом деле является вашей проблемой? –

+0

http://stackoverflow.com/questions/1251956/is-there-a-pdf-parser-for-php – Ghostman

ответ

0

Это из-за вашего типа контента настройка. Ваш браузер не знает, какое приложение открывает документ, когда он является двоичным. Попробуйте изменить тип содержимого с более описательным типом контента, который позволяет браузеру выбрать соответствующее приложение. Например, для PDF это будет application/x-pdf. Обратитесь к MIME Media type directory за другими.

+0

Я меняю его на приложение/msword для doc-файла. Но все же он открывает окно загрузки :( – Learner

+0

Является ли это doc или docx? Docx-файлы являются gzip-файлами. Сначала попробуйте PDF-файл, чтобы узнать, работает ли он. – Rasika

+0

Я разрешаю doc, docx и pdf. Никто не работает так, как я хочу, даже сейчас я попробовал тип содержимого pdf mime в профиле участника просмотра, у которого CV есть в формате pdf, он все равно дает мне окно, чтобы выбрать, где скачать этот pdf :( – Learner

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

Even хотя я добавил случай «docx»: $ ctype = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break; он по-прежнему спрашивает, где скачать: "( – Learner

+0

См. отредактированный ответ. Вы должны использовать свой код таким образом. –

+0

Я храню CV в db не в системных файлах! – Learner

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