Php 生成并下载JSON文件始终返回html文件
我用PHP生成一个JSON文件,并在文件生成完成后通过标题下载它。当我运行下面的代码时,我会查看我的“downloads”文件夹,下载文件的扩展名不是“.json”,而是“.json.html” 如何使文件的扩展名保持“.json” 这是我的密码: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' =&
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上运行良好。