使用 PHP 进行创建文件并在下载后进行删除

需求:下载word文档,并且在下载后删除,不占用服务器空间

    //查询要下载的数据
    $html = Model::first()->content;
    //创建临时文件名字
    $fileName = Model::first()->title.".doc";
    //创建文件到指定目录
    file_put_contents("./doc/".$fileName,$html);
    //打开文件,如果文件不存在会进行创建
    $fp=fopen("./doc/".$fileName,"r");
    //返回文件大小
    $file_size=filesize("./doc/".$fileName);
    //下载文件需要用到的头
    Header("Content-type: application/octet-stream");
    Header("Accept-Ranges: bytes");
    Header("Accept-Length:".$file_size);
    Header("Content-Disposition: attachment; filename=".$fileName);
    $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);
    //下载完成后删除文件
    if($file_count >= $file_size)
    {
     unlink("./doc/".$fileName);
    }



    仅供参考
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 2

可以不用创建文件进行传输

4年前 评论

@likunyan 直接下载文件然后删除吗?

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!