#laravel #vue.js #laravel-5 #vuejs2
#laravel #vue.js #laravel-5 #vuejs2
Вопрос:
Я сохраняю свои изображения в следующем месте
Хранилище / приложение / общедоступные / Пользовательские изображения
Оно сохраняется, но когда я извлекаю его в своем компоненте vue, оно выдает ошибку 404 not found.
<img :src="`/storage/${post.img_path}`"/>
и созданный URL-адрес
http://localhost:8000/storage/userImages/872937058.png
Пожалуйста, дайте какие-либо предложения.
Ответ №1:
-
Добавьте метод в свой контроллер (например
PostController
):use IlluminateSupportFacadesStorage; /** * Display the specified resource. * * @param AppPost $post * @return SymfonyComponentHttpFoundationBinaryFileResponse * @throws IlluminateAuthAccessAuthorizationException */ public function image(Post $post) { return response()->file( Storage::disk('local')->path($post->img_path) ); }
-
Добавьте маршрут к
routes/web.php
:Route::get('/posts/{post}/image', 'PostController@file')->name('posts.image');
-
Используйте его следующим образом:
<img :src="`/posts/${post.id}/image`"/>
Комментарии:
1. Не могли бы вы сказать, что передать в последнем параметре, я сохраняю такой путь в db img_upload/629806533.png, где img_upload — это папка, а 629806533 — изображение
2. @user3653474 какой параметр вы имеете в виду? вы должны передать этот путь, как
Storage::disk('local')->path('img_upload/629806533.png')
в пункте 1.3. <img:src=»
/posts/${post.id}/image
«/> что передать в этом параметре изображения4. изображение не является параметром, это просто часть URL-адреса, который я определил в маршруте:
Route::get('/posts/{post}/image', 'PostController@file')->name('posts.image');
Ответ №2:
Первым шагом вы должны установить
php artisan storage:link
В вашем файле vue вы можете использовать обычный тег img
<img :src="`/storage/${post.img_path}`" />
или,
<img :src="`/storage/userImages/${imageName}`" />
Примечание: вам не нужно добавлять «app / public» в атрибут src