/** * Creates Symfony UploadedFile instance from PSR-7 ones. * * @param UploadedFileInterface $psrUploadedFile * * @return UploadedFile */ private function createUploadedFile(UploadedFileInterface $psrUploadedFile) { $temporaryPath = $this->getTemporaryPath(); $psrUploadedFile->moveTo($temporaryPath); $clientFileName = $psrUploadedFile->getClientFilename(); return new UploadedFile($temporaryPath, null === $clientFileName ? '' : $clientFileName, $psrUploadedFile->getClientMediaType(), $psrUploadedFile->getSize(), $psrUploadedFile->getError(), true); }
/** * @param \Psr\Http\Message\UploadedFileInterface $file * @return string */ public function uploadFile(UploadedFileInterface $file) { if ($file->getError() === UploadedFile::OK) { $fileName = pathinfo($file->getClientFilename()); $dir = date("ymd"); if (!file_exists("{$this->basePath}/{$dir}")) { if (false === @mkdir("{$this->basePath}/{$dir}", 0777, true)) { throw new RuntimeException("fail to create directory."); } } do { $newFileName = sha1($fileName['filename'] . rand()); $newFilePath = "{$this->basePath}/{$dir}/{$newFileName}.{$fileName['extension']}"; } while (file_exists($newFilePath)); $file->moveTo($newFilePath); return "{$dir}/{$newFileName}.{$fileName['extension']}"; } }
protected function uploadFile(UploadedFileInterface $content, $mime, $filePath) { $uri = $content->getStream()->getMetadata('uri'); if (!$uri) { throw new SaveResourceErrorException('Unknown error: can\'t get uploaded file uri'); } $uploadedMime = $this->filesystem->getMimetype($uri); if ($mime !== $uploadedMime) { /** * Try to remove unnecessary file because UploadFile object can be emulated * @see \Staticus\Middlewares\ActionPostAbstract::download */ $this->filesystem->delete($uri); throw new WrongRequestException('Bad request: incorrect mime-type of the uploaded file'); } $content->moveTo($filePath); }