upload() public method

file upload to storage
public upload ( Symfony\Component\HttpFoundation\File\UploadedFile $uploaded, string $path, string | null $name = null, string | null $disk = null, Xpressengine\User\UserInterface $user = null ) : File
$uploaded Symfony\Component\HttpFoundation\File\UploadedFile uploaded file instance
$path string be saved path
$name string | null be saved file name
$disk string | null disk name (ex. local, ftp, s3 ...)
$user Xpressengine\User\UserInterface user instance
return File
 public function testUploadThrownExceptionWhenFileIsInvalid()
 {
     list($handler, $repo, $auth, $keygen) = $this->getMocks();
     $uploaded = m::mock('Symfony\\Component\\HttpFoundation\\File\\UploadedFile');
     $uploaded->shouldReceive('isValid')->andReturn(false);
     $uploaded->shouldReceive('getClientOriginalName')->andReturn('foo.jpg');
     $instance = new Storage($handler, $repo, $auth, $keygen);
     try {
         $instance->upload($uploaded, 'attached');
         $this->assertTrue(false);
     } catch (\Exception $e) {
         $this->assertInstanceOf('Xpressengine\\Storage\\Exceptions\\InvalidFileException', $e);
     }
 }
示例#2
0
 public function testUploadThrownExceptionWhenWritingFail()
 {
     list($handler, $auth, $keygen, $distributor, $temps) = $this->getMocks();
     $instance = new Storage($handler, $auth, $keygen, $distributor, $temps);
     $resource = file_get_contents(__DIR__ . '/sample.png');
     $mockGuest = m::mock('Xpressengine\\Member\\Entities\\Guest');
     $mockGuest->shouldReceive('getId')->andReturnNull();
     $auth->shouldReceive('user')->andReturn($mockGuest);
     $uploaded = m::mock('Symfony\\Component\\HttpFoundation\\File\\UploadedFile');
     $uploaded->shouldReceive('isValid')->andReturn(true);
     $uploaded->shouldReceive('getClientOriginalName')->andReturn('foo.jpg');
     $uploaded->shouldReceive('getPathname')->andReturn(__DIR__ . '/sample.png');
     $keygen->shouldReceive('generate')->once()->andReturn('made-key');
     $distributor->shouldReceive('allot')->once()->with($uploaded)->andReturn('local');
     $handler->shouldReceive('store')->once()->with($resource, m::on(function () {
         return true;
     }), 'local')->andReturn(false);
     try {
         $instance->upload($uploaded, 'attached');
         $this->assertTrue(false);
     } catch (\Exception $e) {
         $this->assertInstanceOf('Xpressengine\\Storage\\Exceptions\\WritingFailException', $e);
     }
 }
 /**
  * file upload
  *
  * @param Request       $request      request
  * @param EditorHandler $handler      editor handler
  * @param Storage       $storage      storage
  * @param MediaManager  $mediaManager media manager
  * @param string        $instanceId   instance id
  * @return RendererInterface
  */
 public function fileUpload(Request $request, EditorHandler $handler, Storage $storage, MediaManager $mediaManager, $instanceId)
 {
     $uploadedFile = null;
     if ($request->file('file') !== null) {
         $uploadedFile = $request->file('file');
     } elseif ($request->file('image') !== null) {
         $uploadedFile = $request->file('image');
     }
     if ($uploadedFile === null) {
         throw new InvalidArgumentException();
     }
     $config = $handler->get($instanceId)->getConfig();
     if (!$config->get('uploadActive') || Gate::denies('upload', new Instance($handler->getPermKey($instanceId)))) {
         throw new AccessDeniedHttpException();
     }
     if ($config->get('fileMaxSize') * 1024 * 1024 < $uploadedFile->getSize()) {
         throw new HttpException(Response::HTTP_REQUEST_ENTITY_TOO_LARGE, xe_trans('xe::msgMaxFileSize', ['fileMaxSize' => $config->get('fileMaxSize'), 'uploadFileName' => $uploadedFile->getClientOriginalName()]));
     }
     $extensions = array_map(function ($v) {
         return trim($v);
     }, explode(',', $config->get('extensions', '')));
     if (array_search('*', $extensions) === false && !in_array(strtolower($uploadedFile->getClientOriginalExtension()), $extensions)) {
         throw new HttpException(Response::HTTP_NOT_ACCEPTABLE, xe_trans('xe::msgAvailableUploadingFiles', ['extensions' => $config->get('extensions'), 'uploadFileName' => $uploadedFile->getClientOriginalName()]));
     }
     $file = $storage->upload($uploadedFile, EditorHandler::FILE_UPLOAD_PATH);
     $media = null;
     $thumbnails = null;
     if ($mediaManager->is($file) === true) {
         $media = $mediaManager->make($file);
         $thumbnails = $mediaManager->createThumbnails($media, EditorHandler::THUMBNAIL_TYPE);
         $media = $media->toArray();
         if (!empty($thumbnails)) {
             $info['thumbnails'] = $thumbnails;
         }
     }
     return XePresenter::makeApi(['file' => $file->toArray(), 'media' => $media, 'thumbnails' => $thumbnails]);
 }