PHP下载文件(laravel)

 public function downloadLaravel()    //有laravel中有现成的下载方法
    {
        return response()
            ->download(realpath(base_path('public')).'/2.jpg', 'new.jpg');
    }
 realpath:该函数删除所有符号连接(比如 '/./', '/../' 以及多余的 '/'),返回绝对路径名。
	base_path():函数返回项目根目录的绝对路径
     download():第一个参数是下载的文件的位置,第二个是文件被下载后赋予的新名字;

    public function download(){     //以原生PHP下载
        $filename=public_path().'/../2.jpg';   //public_path返回public的绝对路径(因为是在框架中写的所以用了laravel中的函数;)
        $file_size=filesize($filename); //filesize获取文件大小 
        header('Content-Type:image/gif');  //指定下载文件类型  header('Content-Disposition: attachment; filename="2.jpg"');  //指定下载文件的描述  header('Content-Length:'.$file_size); //指定下载文件大小 
        $fp=fopen($filename,"r"); //用只读方式打开;  $buffer=1024; //规定一个文件切割的大小
        $file_count=0;
//向浏览器返回数据  while(!feof($fp) && $file_count<$file_size){   //feof() 函数检测是否已到达文件末尾 。  $file_con=fread($fp,$buffer);              //fread() 函数读取文件(可安全用于二进制文件)。  $file_count+=$buffer; 
            echo $file_con;
        }
        fclose($fp); //关闭文件
    }
为了防止文件过大,占用运行内存,我们采用把文件切割到安全大小上传。
这只是下载的简单操作,很多时候项目中的下载为了防止被入侵,我们不可能直接拿文件的路径展示出来,
来进行下载。这样别人可以直接将你文件中的重要文件直接荡下来。
所以...有两个措施【1:可以将允许下载的文件信息放入数据库中,下载的时候通过Id来获取他的信息来下载。】
  【2:给一个文件夹,将所以允许下载的文件都放在里面,当有人想下载这个文件夹以外的文件时不允许下载。】

当下载的时候发现报
《PHP下载文件(laravel)》
这样的BUG时,要将PHP的扩展php_fileinfo打开,就是将前面的 ‘;’去掉。

    原文作者:焚膏油以继晷,恒兀兀以穷年
    原文地址: https://blog.csdn.net/linyunping/article/details/78426208
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞