Laravel获取图像的文件内容但不适用于生产环境

我的代码在 localhost 开发中工作


<img class="img-fluid rounded-circle" src="{{ url('image?type=user&file='.Auth::user()->picture_file.'&mime='.Auth::user()->picture_mime) }}" alt="Image Description">

将访问imageController与get使用这个链接方法image?type=user&file=USER000053.png&mime=image/png


class ImageController extends BaseController

{

    public function get(Request $request){

        $file=Storage::disk($request->type)->get($request->file); 

        return response($file,200)->header('content-Type',$request->mime);

    }

}

在我的filesystem.php配置文件下面


'user' => [

    'driver' => 'local',

    'root' => storage_path('app/user'),

    'url' => env('APP_URL').'/storage',

    'visibility' => 'public',

],

上面的代码在本地主机上运行良好。但是当我们尝试推送到生产服务器(centos os)时,该代码将不起作用。它只是返回一个损坏图像。


我们已经尝试过


[检查] 确保存储和临时可访问。chmod 755. 即使我们尝试过 777

[检查]chown到用户 apache.apache

[检查] 设置 selinux 许可模式

[检查] 我们确保该文件已经存在


$file_exists = Storage::disk($request->type)->exists($request->file);

上面的代码返回 true


[检查] 在下面尝试此代码


$response = Response::make($file, 200);

$response->header('Content-Type', $request->mime);

return $response;

还是不行


试图制作符号链接


php artisan storage:link

它在public文件夹上创建符号链接,但仍然无法正常工作


尝试下载但仍然无法正常工作


 return response()->download(storage_path('app/' . $request->type . "/" . $request->file));

我在 GCP 的 Centos 7 环境中运行。任何想法都会帮助我。谢谢


呼啦一阵风
浏览 156回答 2
2回答

翻翻过去那场雪

只需ob_get_clean();在响应文件之前添加。它将清理所有缓冲区并返回内容以显示图像。

海绵宝宝撒

如果命令ob_get_clean();对您有帮助,请在__<?php .
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript