我创建了一个存储库来使用Intervention/Image
库管理上传图像,但是当我尝试保存图像时,我得到了Call to a member function encode() on null
.
这是我的界面:
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);
}
当我提交表格时,我得到:
Image.php 第 119 行中的 FatalErrorException:在 HandleExceptions.php 中的 FatalErrorException->__construct() 中的 Image.php 第 119 行中的 null 上调用成员函数 encode() 在 HandleExceptions.php 第 118 行中的 HandleExceptions->fatalExceptionFromError() 中的第 133 行在 HandleExceptions->handleShutdown() 在 HandleExceptions.php 第 0 行在 Image->encode() 在 Image.php 第 139 行在 Image->save() 在 InterventionImageRepository.php 第 96 行在 InterventionImageRepository->save() 在 PlacesController.php在 Controller.php 第 76 行中 PlacesController->store() 的第 80 行
问题应该在这里:at Image->save() in InterventionImageRepository.php line 96
并且该行在具体类中,在 save 方法中:
$this->image->save( $fileFolder );
有人可以帮我找到问题吗?