Раньше я хранил свои файлы загрузки (изображения) в своей общей папке, но на этот раз я хочу сохранить их в своей папке хранилища и получаю эту ошибку
Can't write image data to path (C:\laragon\www\mynewsite\storage\images/aboutimage-1522481830.png)
Ошибка исходит из этой строки (где я использую пакет вмешательство / изображение)
Image::make($image)->resize(1200, 600)->save($location);
Моя функция:
if ($request->hasFile('image')) {
$image = $request->file('image');
$filename = 'aboutimage' . '-' . time() . '.' . $image->getClientOriginalExtension();
$location = storage_path('images/' . $filename);
Image::make($image)->resize(1200, 600)->save($location);
$oldFilename = $indexabout->image;
$indexabout->image = $filename;
Storage::delete($oldFilename);
}
любая идея?
Мои файлы будут загружаться в папку root/storage вместо root/storage/app/public/images
это почему?
Я изменил свою функцию на код ниже, и он загружается туда, где должен загружать, но it does not delete the old image
if ($request->hasFile('image')) {
$image = $request->file('image');
$filename = '/aboutimage' . '-' . time() . '.' . $image->getClientOriginalExtension();
$location = storage_path('app/public/images' . $filename);
Image::make($image)->resize(1200, 600)->save($location);
$oldFilename = $indexabout->image;
$indexabout->image = $filename;
Storage::delete($oldFilename);
}
@Nawin все еще загружается в папку хранения: /
Какой путь к вашему хранилищу возвращает и распечатайте переменную $location
как мне получить то, что он напечатал?
дает мне C:\laragon\www\mynewsite\storage\imagesaboutimage-1522483434.png"
Измените свою строчку вот так $filename = '\aboutimage' . '-' . time() . '.' . $image->getClientOriginalExtension();
@Nawin обновлен.
он найдет имя изображения в базе данных и сообщит Storage::delete(, какой файл нужно удалить.
Вам нужно сначала объявить эту строку $indexabout->image = $filename;, а не эту строку $oldFilename = $indexabout->image;
@Nawin Уже без разницы.
echo Your $oldFilename
aboutimage-1522485196.png, который является столбцом image в моей базе данных, поэтому его нужно удалить и заменить новым именем фотографии.
Значит, вам нужно удалить старый файл в БД или в папке?
@Nawin решил, братан, спасибо.
Добро пожаловать, братан :)






вот окончательный код:
if ($request->hasFile('image')) {
$image = $request->file('image');
$filename = 'aboutimage' . '-' . time() . '.' . $image->getClientOriginalExtension();
$location = storage_path('app/public/images/' . $filename); // root storage path
Image::make($image)->resize(1200, 600)->save($location);
Storage::delete('images/' . $indexabout->image); //public storage path
$indexabout->image = $filename;
}
В основном я указал путь Root/Storage для хранения данных и путь Public/Storage для их удаления в методе обновления.
Попробуй этот
$location = storage_path('/images/' . $filename);