apppublic (laravel) 中的图像未显示在 Heroku 应用程序中

laravel

1个回答

写回答

quyuzhu

2025-06-25 11:45

+ 关注

Laravel
Laravel

问题描述:在 Heroku 应用程序中,无法显示 Laravel 框架中 app/public 目录下的图像。

解决方案:

在开发 Laravel 应用程序时,我们可能会遇到在 Heroku 部署应用程序后,无法正常显示存储在 app/public 目录下的图像的问题。这是因为 Heroku 平台的文件系统是临时性的,不适合用于持久存储文件。因此,我们需要采取一些额外的步骤来解决这个问题。

案例代码:

首先,我们需要将 app/public 目录下的图像存储到云存储服务中,例如 Amazon S3 或者 Google Cloud Storage。这样可以确保图像文件在 Heroku 平台上是持久可用的。

在 Laravel 应用程序中,我们可以使用 Laravel 的存储功能来实现这一目标。首先,我们需要在 config/filesystems.php 文件中配置云存储服务的驱动程序。以下是一个示例配置:

php

'disks' => [

// 其他驱动程序...

's3' => [

'driver' => 's3',

'key' => env('AWS_ACCESS_KEY_ID'),

'secret' => env('AWS_SECRET_ACCESS_KEY'),

'region' => env('AWS_DEFAULT_REGION'),

'bucket' => env('AWS_BUCKET'),

],

],

然后,在 .env 文件中设置云存储服务的相关环境变量:

AWS_ACCESS_KEY_ID=your-access-key-id

AWS_SECRET_ACCESS_KEY=your-secret-access-key

AWS_DEFAULT_REGION=your-default-region

AWS_BUCKET=your-bucket-name

接下来,我们需要将存储文件的逻辑添加到我们的应用程序中。假设我们有一个上传图像的功能,用户可以上传图像并将其保存到 app/public 目录下。我们需要修改代码以将图像存储到云存储服务中。以下是一个示例代码片段:

php

use Illuminate\Support\FaCADes\Storage;

public function uploadImage(Request $request)

{

$image = $request->file('image');

$path = $image->store('images', 's3'); // 将图像存储到云存储服务中

// 存储图像的 URL

$url = Storage::disk('s3')->url($path);

// 其他逻辑...

return $url; // 返回图像的 URL

}

在这个示例中,我们使用了 store 方法将图像存储到云存储服务中,并使用 url 方法获取存储图像的 URL。然后,我们可以将 URL 返回给前端应用程序,以便正常显示图像。

解决方案:

通过将 app/public 目录下的图像存储到云存储服务中,我们可以解决在 Heroku 应用程序中无法显示图像的问题。使用 Laravel 的存储功能,我们可以轻松地将图像上传到云存储服务中,并获取存储图像的 URL,以便在应用程序中正常显示图像。

参考代码:

- Laravel 存储文档:Laravel.com/docs/8.x/filesystem">https://Laravel.com/docs/8.x/filesystem

- AWS S3 文档:https://aws.amazon.com/s3/

- Google Cloud Storage 文档:https://cloud.Google.com/storage/

希望本文能帮助到你解决在 Heroku 应用程序中图像无法显示的问题。如果您有任何疑问,请随时提问。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号