gpt4 book ai didi

php - Laravel 中的 BinaryFileResponse 未定义

转载 作者:IT王子 更新时间:2023-10-29 00:06:14 24 4
gpt4 key购买 nike

我遇到了以下问题:我想在路线/getImage/{id} 上返回一个图像函数如下所示:

public function getImage($id){
$image = Image::find($id);
return response()->download('/srv/www/example.com/api/public/images/'.$image->filename);
}

当我这样做时,它会返回给我:

FatalErrorException in HandleCors.php line 18:
Call to undefined method Symfony\Component\HttpFoundation\BinaryFileResponse::header()

我有 use Response; 在 Controller 的开头。我不认为 HandleCors.php 是问题,但无论如何:

<?php namespace App\Http\Middleware;
use Closure;

use Illuminate\Contracts\Routing\Middleware;
use Illuminate\Http\Response;

class CORS implements Middleware {

public function handle($request, Closure $next)
{
return $next($request)->header('Access-Control-Allow-Origin' , '*')
->header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT, DELETE')
->header('Access-Control-Allow-Headers', 'Content-Type, Accept, Authorization, X-Requested-With, Application');
}
}

我实际上不知道为什么会发生这种情况,因为它与 Laravel 文档中描述的完全一样。当我收到错误时,我已经更新了 Laravel,但这并没有解决它。

最佳答案

问题是你在 Response 对象上调用 ->header() 没有那个函数(Symfony\Component\HttpFoundation\BinaryFileResponse 类)。 ->header() 函数是 part of a trait这是 Laravel 的 Response class 使用的,而不是基本的 Symfony 响应。

幸运的是,您可以访问 headers 属性,因此您可以这样做:

$response = $next($request);

$response->headers->set('Access-Control-Allow-Origin' , '*');
$response->headers->set('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT, DELETE');
$response->headers->set('Access-Control-Allow-Headers', 'Content-Type, Accept, Authorization, X-Requested-With, Application');

return $response;

关于php - Laravel 中的 BinaryFileResponse 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29289177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com