很多情况下,如果为了网站资源案例考虑,我们就不能直接暴露资源的地址到页面中去,以防被人用工具去扫描盗用资源文件下的文件,在这里我们就可以考虑以前端页面请求后端程序,后端程序加以验证之后,以流的方式将资源输出,这样就会安全多了。
1、PHP代码(这里我是写在ThinkPHP5里面的,其它地方直接复制修改参数用)
/* * 获取文件流 * */ 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标签
<img src="/tphome/Index/getFileStream.html?id=1" alt="" />
3、最终的效果
版权声明:
此文为本站源创文章[或由本站编辑从网络整理改编],
转载请备注出处:
[狂码一生]
https://www.sindsun.com/articles/8/90
[若此文确切存在侵权,请联系本站管理员进行删除!]
--THE END--