dongxieyou3314 2014-12-12 16:28
浏览 80
已采纳

用Yii,Mysql下载longblob文件(adobe Illustrator或png)

I am trying to download ai/png from mysql DB but all I get is an empty file. On the table I only have id and two longblob (file_ai, file_png). For example, file adobe illustrator view is:

echo CHtml::link('<span class="glyphicon glyphicon glyphicon-download-alt" aria-hidden="true"></span>', 
array('User/downloadFile', 'id' => $file->id, 'ext' => 'application/illustrator'), 
$htmlOptions = array('class' => 'toolMes', 'download', 'data-toggle' => 'tooltip', 'data-placement' => 'bottom', 'title' => 'Download Ai'));

In the controller:

public function actionDownloadFile($id, $ext) {
        $file = Files::model()->findByPk($id);
        if ($ext === 'application/illustrator') {
            header("Content-length:" . strlen($file->file_ai));
            header("Content-type: " . $ext . "");
            header('Content-Disposition: attachment; filename="' . $file->id . '_' . date("Y-m-d") . '.ai"');
        } else {
            header("Content-length:" . strlen($file->file_png));
            header("Content-type: image/png");
            header('Content-Disposition: attachment; filename="' . $file->id . '_' . date("Y-m-d") . '"');
        }
    }

Hope it is enough to have your precious suggestions

  • 写回答

1条回答 默认 最新

  • doubian0284 2014-12-12 16:46
    关注

    Your not echoing out the actual file contents!

    If you are storing images in your database you need to do the echo after you throw the headers...

    echo $file->file_ai;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效