前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用PHP将图片以流的形式加载到image标签中

用PHP将图片以流的形式加载到image标签中

作者头像
Sindsun
发布2019-12-06 17:46:21
1.6K0
发布2019-12-06 17:46:21
举报
文章被收录于专栏:狂码一生狂码一生

  很多情况下,如果为了网站资源案例考虑,我们就不能直接暴露资源的地址到页面中去,以防被人用工具去扫描盗用资源文件下的文件,在这里我们就可以考虑以前端页面请求后端程序,后端程序加以验证之后,以流的方式将资源输出,这样就会安全多了。

1、PHP代码(这里我是写在ThinkPHP5里面的,其它地方直接复制修改参数用)

代码语言:javascript
复制
    /*
     * 获取文件流
     * */
    public function getFileStream(){
        //接收前端传过来的ID
        $id = input('get.id');
        if(empty($id)){
            echo ''; 
            exit();
        }
        //在这里可以加入自己的逻辑与业务处理程序
        //********
        
        //从数据库取出资源地址
        $prizeObj = new prizeModel();
        $info = $prizeObj->get($id);
        $imgUrl = $info['thumb'];
        //资源文件目录
        $fpath = ROOT_PATH . 'public/';
        //编码转换
        $filename=iconv('utf-8', 'gb2312', $imgUrl);
        $path=$fpath.$filename;
        //检测文件是否存在
        if(!file_exists($path)){
            echo "文件不存在!";
            exit();
        }
        //只读方式打开
        $fp=fopen($path,'r');
        //文件大小
        $filesize=filesize($path);
        //设置文件类型
        header( "Content-type: image/jpeg");
        //预先清空缓冲区
        ob_clean();
        flush();
        //开始读取文件流
        $picturedata = fread($fp, $filesize);
        //读取完成 后关闭文件句柄,以防资源浪费 
        fclose($fp);
        //输出文件流
        echo $picturedata;
        exit();
    }

2、html中的image标签

代码语言:javascript
复制
<img src="/tphome/Index/getFileStream.html?id=1" alt="" />

3、最终的效果

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-09-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档