/** * Add an entry for Resource entity in database at each upload * * @param GaufretteFile $file * @param string $originalFilename * @param string $type * @return ResourceInterface * @throws \InvalidArgumentException|\UnexpectedValueException|FileNotFound */ public function addFile(GaufretteFile $file, $originalFilename, $type = null) { $resource = $this->createByType($type)->setOriginalFileName($originalFilename)->setFileName($file->getKey()); $this->updateResourceMetadata($resource, $file); // Custom code $em = $this->doctrine->getManager(); $em->persist($resource); $em->flush(); return $resource; }
/** * Add an entry for Resource entity in database at each upload * OR: find the already uploaded file based on it's hash * * @param GaufretteFile $file * @param string $originalFilename * @param string $type * * @throws FileNotFound * @throws \InvalidArgumentException * @throws UnexpectedValueException * @throws \RuntimeException * * @return ResourceInterface */ public function addFile(GaufretteFile $file, $originalFilename, $type = null) { $fs = $this->getFilesystemForType($type); $hash = $fs->checksum($file->getKey()); $resource = $this->findByHash($type, $hash); if ($resource) { // If resource already uploaded if ($fs->has($resource->getFileName())) { // If the file is still there $file->delete(); // Delete uploaded file (because we already have one) return $resource; } } else { $resource = $this->createByType($type); } $resource->setOriginalFileName($originalFilename)->setFileName($file->getKey())->setHash($hash); $this->updateResourceMetadata($resource, $file); $em = $this->doctrine->getManager(); $em->persist($resource); $em->flush(); return $resource; }