Php 如何确保在Laravel 5中正确提供图像?

Php 如何确保在Laravel 5中正确提供图像?,php,laravel-5.7,Php,Laravel 5.7,(如果有编辑能帮我更好地为这个问题命名,我将不胜感激) 我有一个控制器,它有一个在存储器中提供PNG图像的方法,基本上它说: public function background($id) { $campaign = Campaign::find($id); $file = Storage::get($campaign->background); return new Response($file, 200); } 在我的路线中: Route::get('/cam

(如果有编辑能帮我更好地为这个问题命名,我将不胜感激)

我有一个控制器,它有一个在存储器中提供PNG图像的方法,基本上它说:

public function background($id) {
    $campaign = Campaign::find($id);
    $file = Storage::get($campaign->background);
    return new Response($file, 200);
}
在我的路线中:

Route::get('/campaign/background/{id}', 
    'CampaignController@background')->name('campaign.background');
因此,如果我在
1])}“class=“…”>
它将为我提供id为1的班级活动的背景图像

现在,我的问题是,当我尝试加载几个IMG时,比如在Bootstrap 4旋转木马中,我有:

<img src="{{ route('campaign.background', [id => 1]) }}" class="...">

'4']}?auto=yes“alt=”第一张幻灯片“>
'14']}?auto=yes“alt=”第二张幻灯片“>
'2']}?auto=yes“alt=”第三张幻灯片“>
只有第一个图像(ID4)显示正确,ID14和ID2有时加载正确,但大多数情况下,它们不正确,它们只显示ALT

我想这一定与缓存有关,如果我多次重新加载页面,所有IMG都会出现


我在Windows 10上使用Laravel 5.7、PHP 7.2.10、Apache 2.4.35

可能缺少一些头文件,浏览器不知道您提供的是哪种文件

你可以试试这个:

<div id="caro" class="carousel slide" data-ride="carousel">
    <div class="carousel-inner">
        <div class="carousel-item active">
            <img class="d-block w-100" src="{{ route('campaign.background', ['id' => '4']) }}?auto=yes" alt="First slide">
        </div>
        <div class="carousel-item">
            <img class="d-block w-100" src="{{ route('campaign.background', ['id' => '14']) }}?auto=yes" alt="Second slide">
        </div>
        <div class="carousel-item">
            <img class="d-block w-100" src="{{ route('campaign.background', ['id' => '2']) }}?auto=yes" alt="Third slide">
        </div>
    </div>
</div>

Storage::response()
应该自动设置内容类型、内容配置、大小,也许还有一些我忘记的内容。这些标题将帮助浏览器确定响应中的内容类型。

浏览器(控制台或网络)中的开发工具是否提供了更多信息?是404错误还是别的什么?不,不是。如果我分别加载id的14和2,它可以正常工作,即使我在本例中更改显示顺序,比如14、2和4,14将显示,而2和4在大多数情况下不会显示。如果我多次重新加载(ctrl-R)页面,三个图像将正确显示。我不知道为什么。我试试看,然后告诉你。让我困惑的是,有时候它是有效的,但大多数时候它并不完美,所以是的,正如你所说,一定是关于标题的
public function background($id) {
    $campaign = Campaign::find($id);
    return Storage::response($campaign->background);
}