如何在php中从db打开文件

时间:2015-03-31 05:58:21

标签: php mysql

我创建了一个个人资料页面来查看会员信息,其中一个信息是他/她的简历。我可以管理查看具有打开或下载选项的窗口但是我有两个问题:

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>

更新:

让我们假设cv文件类型是docx,如果它有效,我将切换到case doc和pdf并更改内容类型。

2 个答案:

答案 0 :(得分:0)

这是因为您的内容类型设置。您的浏览器在二进制文件时不知道打开文档的应用程序。尝试使用更具描述性的内容类型更改内容类型,以便浏览器选择适当的应用程序。例如,对于PDF,它将是application/x-pdf。其他人请参阅MIME Media type directory

答案 1 :(得分: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 />";
        }
    }
?>