Я создал класс Media для загрузки изображений для хранения в общедоступном пути к хранилищу Laravel, но метод сохранения Intervention не работает
Я пытался изменить разрешение каталогов, но ничего не сделал. Я также пытался использовать функцию public_path () для моих путей или getRealPath () к файлу. Я также проверил много других подобных вопросов, связанных с этой проблемой, и в конце я думаю, что это, вероятно, проблема с Laravel v.6
Это функция для загрузки файлов:
/**
* @param $entity
* @param $file
* @return string
*/
public function processFile($entity, $file)
{
if (!$file->isValid()) {
return false;
}
$imgName = preg_replace('@[a-z0-9]i@', '_', md5(uniqid(time())) . time());
$fileName = $imgName . '.' . $file->extension();
$pathSmall = "image/$entity/small/";
$pathLarge = "image/$entity/large/";
if (!Storage::exists($pathSmall)) {
Storage::makeDirectory($pathSmall, 7777, true, true);
}
if (!Storage::exists($pathLarge)) {
Storage::makeDirectory($pathLarge, 7777, true, true);
}
Image::make($file)->resize(310, 170)->save($pathSmall.$fileName);
Image::make($file)->resize(1920, 1080)->save($pathLarge.$fileName);
return $fileName;
}
Я попытался отладить весь код, и проблема заключается в способе сохранения, образ создается и изменяется правильно, но сохранение не работает:
Intervention\Image\Exception\NotWritableException: Can't write image data to path (image/post/small/c2839f74e99f1c7f7c798171cf8ecf7b1571167248.jpeg) in file /home/vagrant/code/api-blog/vendor/intervention/image/src/Intervention/Image/Image.php on line 150