Хранилище Laravel 6 приводит к ошибке 404 при попытке извлечь файлы
Я попытался настроить сценарий загрузки в Laravel и следовал инструкциям в документах. Я создал символическую ссылку с помощью сценария Laravel, и она выглядит следующим образом
хранилище -> /Пользователи/Имя пользователя/сайты/переключателя/хранения/приложения/общественные
Проблема возникает, когда я иду, чтобы загрузить изображение, а затем получить результат url-адреса изображения в ответ. Как вы можете видеть, чтобы соответствовать символической ссылке, я установил папку как общедоступную ниже.
$path = $request->file('manufacturer_image_name')->store('public');
echo asset($path);
и это возвращает
http://127.0.0.1:8000/public/XxIX7L75cLZ7cf2xzejc3E6STrcjfeeu3AQcSKz1.формат PNG
проблема в том, что это не работает и бросает 404, но если я вручную изменю url-адрес с "public" на "storage", он найдет изображение.
http://127.0.0.1:8000/storage/XxIX7L75cLZ7cf2xzejc3E6STrcjfeeu3AQcSKz1.формат PNG
Не стоит
Эхо активов($путь);
возвращение URL-адрес, содержащий вместо государственного?








Ответы - Хранилище Laravel 6 приводит к ошибке 404 при попытке извлечь файлы / Laravel 6 Storage results in a 404 error when trying to fetch files

15.11.2019 10:43:48
assett($path)
предназначен для создания URL-адреса для активов, которые находятся только в общей папке, таких как файлы CSS и JS, созданные Mix. Если вы используете хранилище Laravel для сохранения файла, вы также должны использовать хранилище Laravel для создания URL-адреса файла.
Storage::url('file.jpg');

public
диск, это было бы лучше, но локальный диск не генерирует URL-адреса

15.11.2019 10:59:23
Ну, есть много способов сделать это, выбрать кого-то, кто подходит вам лучше всего.
// using storage_path helper
storage_path('public/' . $filename);
// you could make a double-check with File::exist() method
$path = storage_path('public/' . $filename);
if (!File::exists($path)) {
abort(404);
}
// using asset helper
asset('storage/your_folder/image.png');
// using url helper
url('storage/your_folder/image.png');
// using Storage facade
Storage::url($photoLink)

15.11.2019 11:04:05
Спасибо за помощь, я обнаружил, что этот ответ подходит почти идеально, что мне нужно. Laravel: хранение не помещает файл в общую папку
Это было то, с чем я закончил.
if($request->file('manufacturer_image_name')){
$path = Storage::disk('public')->put('logo', $request->file('manufacturer_image_name'));
echo $path;
}
теперь $Path возвращает "логотипом/именем.ext "вместо" public/ or storage/", поэтому я могу хранить это непосредственно в БД.


public
от корня диска (локальный диск), поэтому он возвращает вам точный путь от корня диска: public/xxxxxxxxxxx


15.11.2019 11:07:21
Вот самая простая и точная вещь для вашего вопроса
if(!empty($request->file('manufacturer_image_name'))){
$path = storage_path('public/image/');
$image_path = Storage::disk('public')->put('manufacturer_image_name', $request->file('manufacturer_image_name'));
//Assuming you have a model called Manufacturer and created $manufacturer = new Manufacturer()
$manufacturer->manufacturer_image_name = isset($image_path) ? "storage/".$image_path : "";
}