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;

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

报告相同问题?

悬赏问题

  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题