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

用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;

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

报告相同问题?

悬赏问题

  • ¥15 三分类机器学习模型可视化分析
  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)
  • ¥50 Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)
  • ¥30 python,LLM 文本提炼
  • ¥15 关于将inet引入的相关问题
  • ¥15 关于一个倒计时的操作和显示设计
  • ¥15 提问STK的问题,哪位航天领域的同学会啊
  • ¥15 苹果系统的mac m1芯片的笔记本使用ce修改器使用不了
  • ¥15 单相逆变的电压电流双闭环中进行低通滤波PID算法改进
  • ¥15 关于#java#的问题,请各位专家解答!