Php 使用Laravel存储外观存储SQL查询

Php 使用Laravel存储外观存储SQL查询,php,mysql,laravel-5.6,Php,Mysql,Laravel 5.6,我创建了一个控制器,它以SQL查询的形式备份表数据。在浏览器上,有三个复选框,其中包含三个表:订单、帖子和产品。此外,当我选择这些表时,我希望它们存储在[日期时间].sql的目录storage/app中,并自动从浏览器中下载。当我点击备份时,我发现了这个错误 [2018-07-04 08:39:15]上的文件内容(/home/vagrant/code/laravelBackup/storage/app/backup)。sql):打开流失败:协议错误 先谢谢你。这是我的代码: public fun

我创建了一个控制器,它以SQL查询的形式备份表数据。在浏览器上,有三个复选框,其中包含三个表:订单、帖子和产品。此外,当我选择这些表时,我希望它们存储在[日期时间].sql的目录storage/app中,并自动从浏览器中下载。当我点击备份时,我发现了这个错误

[2018-07-04 08:39:15]上的文件内容(/home/vagrant/code/laravelBackup/storage/app/backup)。sql):打开流失败:协议错误

先谢谢你。这是我的代码:

public function download($output)
{
    $time = Carbon::now()->toDateTimeString();
    $file_name = 'backup_on[' . $time . '].sql';
   // $file_name = 'database_backup_on_' . date('y-m-d') . '.sql';
   // $file_name = 'backup.sql';

    Storage::disk('local')->put($file_name, $output);

    // Storage::lastModified($file_name);

    $exists = Storage::disk('local')->exists($file_name);

    if ($exists) {
        // $name_of_file = 'backup';
        $headers = 
        [
        'Content-Description => File Transfer',
        'Content-Type => application/octet-stream',
        'Content-Disposition => attachment; filename=' . basename($file_name),
        'Content-Transfer-Encoding => binary',
        'Expires => 0',  
        ob_clean(),
        flush(),
        readfile($file_name),
        unlink($file_name)
        ];

    }

    return Storage::download($file_name, $file_name, $headers);
}

如果我使用本机php函数date('y-m-d'),则文件存储正确。但我也需要储存时间。而且,我希望文件能在浏览器上自动下载。我怎样才能做到呢?文件名不能有
字符。Metalic,谢谢你的提示。但是我如何存储时间呢?Carbon有一个你可以使用的日期('y-m-d-H-I-s'))