0

私は Yii に取り組んでおり、いくつかのファイルをアップロードおよびダウンロードしたいのですが、blob タイプの blob_document フィールドの Documents テーブルにいくつかのファイルをアップロードできます。ファイルをダウンロードするためにこれを実行しようとしました

<?
    $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 ファイルをダウンロードしていますが、コンテンツには元のテキストではなくファイルの名前が含まれています。

4

2 に答える 2

1

$ file-> 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;
?>
于 2013-02-15T18:55:10.873 に答える
0

データベース内のコンテンツはどのように見えますか?正しく挿入されていない可能性があります。

SQLを抽象化することは犯罪であるべきです;-)

于 2013-02-15T18:55:47.533 に答える