【问题标题】:get empty file after download下载后得到空文件
【发布时间】:2023-01-26 07:42:28
【问题描述】:

我想下载一个 projet 文件,但我得到它是空的。我正在使用电子表格库 注意:我在保存功能后进行转储,我的文件已满而不是项目路径目录中的空文件 有人可以帮助我!

波纹管是我的代码:

$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('template.xlsx');
$worksheet = $spreadsheet->getActiveSheet();
$filename = 'write.xls';
$worksheet->getCell('A1')->setValue('John');
$worksheet->getCell('A2')->setValue('Smith');
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xls');
$writer->save($filename);  die;
// to download file
header('Content-Type: application/vnd.ms-excel');
header("Content-Length:".filesize($filename));
header("Content-Disposition: attachment;filename=$filename");
header('Cache-Control: max-age=0');
$writer->save('php://output'); 
exit();

下载后我除了一个完整的文件

【问题讨论】:

  • 您的问题很可能在这里:header("Content-Length:".filesize($filename)); 由于您在下载结果时没有写入文件,因此您很可能将文件大小指定为零 (0)。这就是你得到的。
  • 当我删除 die 时,我得到了一个空文件。我的大小文件转储与 0 不同!
  • 所以你保存到文件到输出流?可能是库只允许一个输出。尝试删除保存到文件。或者,如果您需要服务器端的文件,请使用readfile 命令发送文件。

标签: php laravel-8 phpspreadsheet


【解决方案1】:

我有同样的问题。工作了一个星期,但无济于事,做不到。在网上搜索和搜索示例、复制、修改等……都行不通。仍然没有找到解决办法。最后,刚刚创建了这个函数:

define ("ONE_DAY", 86400);
function getExisting()
{
    $rootFolder = "pathTodirectory";
    //first clear old files
    $files = scandir($rootFolder,1);
    array_pop($files); array_pop($files);
    foreach($files as $file)
    {
        $fp = $rootFolder . DIRECTORY_SEPARATOR . $file;
        $filemtime=filemtime($fp);
        if (time() - $filemtime >= (2 * ONE_DAY))unlink($fp);
    }//end clearing old files
    //second rescan folder for current files
    $files = scandir($rootFolder,1);
    array_pop($files); array_pop($files);
    $existing = array_reverse($files);
    return $existing;                
}

$existing = getExisting();
echo "
<p> Select file or enter office number to review inventory:"; 
echo "
    <ul>";
foreach($existing as $rpt)
{
    $spd =  "pathTodirectory" . $rpt;  \make sure to follow up with relative path name here also
    echo "
           <li><a href="$spd" >" . $rpt ."</a></li>";
}
echo "
    </ul>";

【讨论】:

    猜你喜欢
    • 2019-11-14
    • 2019-03-06
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 2011-03-09
    相关资源
    最近更新 更多