如何将不同类型的文件上传到SQL,然后检索它们以便使用PHP下载

时间:2013-02-15 18:53:37

标签: php mysql frameworks yii download

我正在研究Yii,我想上传和下载一些文件,我可以将一些文件上传到blob_document字段中的Documents表,这是blob类型,现在我已经尝试过这样下载文件

<?
    $file = Documents::model()->findByPk('3');
    $file = $file->blob_document;
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    echo $file;
    exit;
?>

我正在下载.txt文件,这是正确的扩展名,但内容的名称是文件而不是原始文字。

2 个答案:

答案 0 :(得分:1)

$ file-&gt; blob_document只是文件名,要获取内容,可以使用file_get_contents,或者更好(减少内存消耗),readfile()来输出文件的内容。

<?php
    $file = Documents::model()->findByPk('3');
    $file = $file->blob_document;
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    readfile($file);
    exit;
?>

答案 1 :(得分:0)

数据库中的内容是什么样的?也许它没有正确插入......

提取SQL,应该是犯罪; - )