Я создал репозиторий для управления загружаемым изображением с использованием библиотеки Intervention/Image
, но когда я пытаюсь сохранить изображение, я получаю Call to a member function encode() on null
.Laravel 5.2.x - Intervention/Image - вызов функции-члена encode() по нуле
Это мой интерфейс:
namespace App\Repositories\MeetMount\ImageUploader;
use Illuminate\Http\Request;
interface ImageContract {
public function getExt($filename);
public function setFolder($folderName);
public function getRandomFilename($fileName);
public function addWatermark($watermarkName);
public function resize($width, $height);
public function getFileName();
public function save(Request $file);
}
Это мой конкретный класс:
namespace App\Repositories\MeetMount\ImageUploader;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;
use Intervention\Image\Image;
class InterventionImageRepository implements ImageContract {
/**
* @var Image
*/
private $image;
/**
* @var $folder
*/
private $folder;
/**
* InterventionImageRepository constructor.
*
* @param Image $image
*/
public function __construct(Image $image)
{
$this->image = $image;
}
/**
* Restituisce l'estensione dell'immagine
*
* @param $fileName
* @return string
*/
public function getExt($fileName)
{
$pos = strrpos($fileName, '.');
$ext = substr($fileName, $pos, strlen($fileName));
return $ext;
}
/**
* Imposta la cartella dove salvare l'immagine
*
* @param $folderName
* @return $this
*/
public function setFolder($folderName)
{
$folderPath = public_path($folderName);
if(! File::exists($folderPath))
{
File::makeDirectory($folderPath);
}
$this->folder = $folderPath;
return $this;
}
public function getRandomFilename($fileName)
{
// TODO: Implement getRandomFilename() method.
}
/**
* Aggiungi watermark
*
* @param $watermarkName
* @return $this
*/
public function addWatermark($watermarkName)
{
$watermarkPath = public_path('images/watermarks/' . $watermarkName);
$this->image->insert($watermarkPath);
return $this;
}
/**
* Salva il file
*
* @param $file
* @return $this
*/
public function save(Request $request)
{
$file = $request->file('immagine');
$fileFolder = $this->folder . '/' . $file->getClientOriginalName();
$this->image->save($fileFolder);
return $this;
}
public function getFileName()
{
// TODO: Implement getFileName() method.
}
public function resize($width, $height)
{
// TODO: Implement resize() method.
}
}
и это метод хранения:
public function store(CreatePlaceRequest $request)
{
$this->imageRepository->setFolder('cartella-prova')->save($request);
}
Когда я отправить форму, я получаю :
FatalErrorException in Image.php line 119: Call to a member function encode() on null in Image.php line 119 at FatalErrorException->__construct() in HandleExceptions.php line 133 at HandleExceptions->fatalExceptionFromError() in HandleExceptions.php line 118 at HandleExceptions->handleShutdown() in HandleExceptions.php line 0 at Image->encode() in Image.php line 139 at Image->save() in InterventionImageRepository.php line 96 at InterventionImageRepository->save() in PlacesController.php line 80 at PlacesController->store() in Controller.php line 76
Проблема должна быть здесь: at Image->save() in InterventionImageRepository.php line 96
и что линия находится в конкретном классе, в методе сохранения:
$this->image->save($fileFolder);
Может кто-то помочь мне найти проблему?
я внедрившие вмешательства изображения с Laravel. Просто дайте мне знать, какую версию laravel вы используете. –
версия 5.2. * –
Когда вы запускаете репозиторий, вы предоставляете фактическое изображение? Я имею в виду, что это в конструкторе. –