#laravel #vue.js
#laravel #vue.js
Вопрос:
У меня есть форма с вводом файла, готовая к сохранению.
$request->validate([
'name'=> 'required|min:3',
'image'=> 'required|image|mimes:jpeg,png,jpg'
]);
$category = new Category();
$category->name = $request->name;
$path = $request->file('image')->store('categories_images');
$category->image = $path;
Приведенный выше код делает то, что он извлекает поле изображения из запроса и сохраняет его в папке categories_images . Когда я впервые загрузил файл для его тестирования, он создал папку в хранилище / приложении.
Моя проблема в том, что я хочу просмотреть изображения на своем сайте:
//store.state.serverPath returns: http://localhost:8000 -> this is right
<img :src="`${$store.state.serverPath}/storage/${category.image}`" class="image-wd"/>
Когда я проверяю его в браузере, он говорит:
http://localhost:8000/storage/categories_images/adGR57Gq6lNUqRVvEubRDfxNMZzEhya3A7oESUox.png не найдено
Он ожидает изображения в хранилище / app / public, но создает папку categories_images каждый раз, когда я загружаю изображение в хранилище / приложение. Я что-то здесь упускаю?
Ответ №1:
Кажется, я не могу оставить комментарий просто в качестве ответа. Итак, позвольте мне добавить свой вклад. Вы создали свою символическую ссылку? Если нет, сделайте это сейчас или просто переделайте. У меня была такая же проблема, когда я портировал свой код с mac на Windows. Даже если вся настройка была выполнена точно, ссылка была связана с моим mac. Я только что исправил эту проблему для своего кода. Так что спасибо за ваш вопрос.
php artisan storage:link
Также первым параметром хранилища является путь, по которому вы хотите сохранить файл в хранилище / общедоступном каталоге. Вам нужно добавить имя каталога в ваш URL-адрес, чтобы найти файл.
Это код, который я использую в одном из своих проектов.
$path = isset($validated['document']) ? $path = $request->file('document')->store('pdfs', 'public') : null;
Доступ к файлу будет осуществляться по URL-адресу www.example.com/storage/pdfs /$путь
document — это имя входного файла.
Ответ №2:
Вы пропустили ту часть руководства, где он изменил конфигурацию -> filesystems.php с этим
'local' => [
'driver' => 'local',
'root' => storage_path('app/public'),
],