PHP 转换二进制图片数据保存至本地并提供下载

1.转换二进制数据至本地图片

   public function save_image($data){
        //生成图片
        $imgDir = '/public/image/';
        $filename="nissangcj".time().".jpg";///要生成的图片名字
         
        $jpg = $data;//得到post过来的二进制原始数据
        if(empty($jpg)){
            return array('rsp'=>'fail','data'=>'数据为空 请稍候重试');
        }
         
        $file = fopen("./".$imgDir.$filename,"w");//打开文件准备写入
        fwrite($file,$jpg);//写入
        fclose($file);//关闭
         
        $filePath = './'.$imgDir.$filename;
         
        //图片是否存在
        if(!file_exists($filePath)){
            return array('rsp'=>'fail','data'=>'图片已经存在 请稍候重试');
        }else{
            return array('rsp'=>'succ','data'=>$imgDir.$filename);
        }
    }

2.传入图片路径 浏览器直接下载

    //下载图片
    public function download($data){
        $file = $data['image_url'];
		$fileTmp = pathinfo($file);
		$fileExt = $fileTmp['extension'];
        
		$saveFileName = (time().'.'.$fileExt);//下载文件名
		$fp=fopen($file,"r");
		$file_size=filesize($file);
		
		//下载文件需要用到的头
		Header("Content-type: application/octet-stream"); 
		Header("Accept-Ranges: bytes"); 
		Header("Accept-Length:".$file_size); 
		Header("Content-Disposition: attachment; filename=".$saveFileName); 
		$buffer=1024;
		$file_count=0;
		//向浏览器返回数据
		while(!feof($fp) && $file_count<$file_size){
			$file_con=fread($fp,$buffer);
			$file_count+=$buffer;
			echo $file_con;
		}
		fclose($fp);
		exit;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值