Php 生成并下载JSON文件始终返回html文件

Php 生成并下载JSON文件始终返回html文件,php,json,laravel-5,Php,Json,Laravel 5,我用PHP生成一个JSON文件,并在文件生成完成后通过标题下载它。当我运行下面的代码时,我会查看我的“downloads”文件夹,下载文件的扩展名不是“.json”,而是“.json.html” 如何使文件的扩展名保持“.json” 这是我的密码: foreach($tickets as $ticket) { $data['tickets'][] = [ 'tickets_id' => $ticket->ticket_id, 'name' =&

我用PHP生成一个JSON文件,并在文件生成完成后通过标题下载它。当我运行下面的代码时,我会查看我的“downloads”文件夹,下载文件的扩展名不是“.json”,而是“.json.html”

如何使文件的扩展名保持“.json”

这是我的密码:

foreach($tickets as $ticket)
{
    $data['tickets'][] = [
        'tickets_id' => $ticket->ticket_id,
        'name' => strtolower($ticket->name),
        'email' => strtolower($ticket->email),
        'status' => $ticket->status
    ];
}

header('Content-Type: application/json');
header('Content-Disposition: attachment; filename=db.json');
header('Pragma: no-cache');
echo json_encode($data);
下载的文件是=>db.json.htmlnotdb.json

编辑:完整代码如下

public function ticketsExportJSON($id)
{
    $tickets = Ticket::where('event_id', $id)->with('event')->get();

    $data = [];
    $i = 0;

    foreach($tickets as $ticket)
    {
        $i++;
        if($i == 1)
        {
            $data = [
                'event' => $ticket->event->title,
                'date' => $ticket->event->event_date
            ];
        }
        else
        {
            $data['tickets'][] = [
                'tickets_id' => $ticket->ticket_id,
                'name' => strtolower($ticket->name),
                'email' => strtolower($ticket->email),
                'status' => $ticket->status
            ];
        }
    }

    header('Content-Type: application/json');
    header('Content-Disposition: attachment; filename=db.json');
    header('Pragma: no-cache');
    echo json_encode($data);
}

使用路由:/download/json调用ticketexportjson函数。

我想你忘了添加
exit()在代码末尾。

只需使用
streamDownload()
方法(),将
['Content Type'=>'application/json']
作为第三个参数传递。

您的php文件中还有其他内容吗?没有其他内容…如何下载它?我调用一个url:mywebsite.com/download/json,该文件以标题下载(内容配置:attachement;文件名=db.json)如果打开db.json.html,是否有正确的数据?欢迎使用Stack Overflow!。若要评论作者或要求作者澄清,请在其帖子下方留下评论-您可以随时对自己的帖子发表评论,一旦发表评论,您就可以发表评论。同时,请不要使用回复发表评论。否,Safari将json文件重命名为默认设置。我不知道为什么。该代码在Chrome和FF上运行良好。