LaravelでS3に画像を保存し、その画像をnuxt.jsで表示させたいのですが、表示されなくて困っています。
aws S3確認すると、images/に保存されています。
s3の画像のurlはimagesテーブルのpathカラムに保存しています。
どうか、アドバイスをいただきたいです。よろしくお願いします????♂️
nuxt.js show.vue
<template> <div> <li v-for="image in images"> <img src="{{ Storage::disk('s3')->url("{{image.path}}")}}"> </li> </div> </template> <script> import axios from 'axios'; export default { data() { return { images:[], title:"", }; }, created(){ this.getCategories() }, methods:{ getCategories: function(){ axios.get(`http://127.0.0.1:8000/api/register`) .then(response => { this.images = response.data.images console.log(response.data) }); }, jump:function(id){ this.$router.push({ path: `top/${id}`}); console.log(id) } }, }; </script>
laravel PostImageController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Storage; use App\Post; use App\Category; use App\Image; class PostImageController extends Controller { public function s3(Request $request) { $disk = Storage::disk('s3'); $image = $request->image; $path = $disk->putFile('images', $image,'public'); $image =new Image(); $image->path = Storage::disk('s3')->url($path); $request->image->storeAs ('public/images', $post->id . '.jpg', ['disk' => 's3']); $image->save(); return response()->json(['response'=>$path],200); } public function show(Request $request) { $images=Image::all(); return response()->json(['images'=>$images],200); } }
api.php
Route::get('/show','PostImageController@show');
あなたの回答
tips
プレビュー