/**
  * Copy a file to the mediaLibrary for the given $media.
  *
  * @param string                     $file
  * @param \Spatie\MediaLibrary\Media $media
  * @param bool                       $conversions
  * @param string                     $targetFileName
  */
 public function copyToMediaLibrary($file, Media $media, $conversions = false, $targetFileName = '')
 {
     $destination = $this->getMediaDirectory($media, $conversions) . ($targetFileName == '' ? pathinfo($file, PATHINFO_BASENAME) : $targetFileName);
     if ($media->getDiskDriverName() === 'local') {
         $this->filesystem->disk($media->disk)->put($destination, fopen($file, 'r+'));
     } else {
         $this->filesystem->disk($media->disk)->getDriver()->put($destination, fopen($file, 'r+'), ['ContentType' => File::getMimeType($file)]);
     }
 }
 public function canConvert(Media $media) : bool
 {
     if (!$this->requirementsAreInstalled()) {
         return false;
     }
     if ($this->supportedExtensions()->contains(strtolower($media->extension))) {
         return true;
     }
     $urlGenerator = UrlGeneratorFactory::createForMedia($media);
     if (method_exists($urlGenerator, 'getPath') && file_exists($media->getPath()) && $this->supportedMimetypes()->contains(strtolower(File::getMimetype($media->getPath())))) {
         return true;
     }
     return false;
 }
 /**
  * Perform the given conversions for the given media.
  *
  * @param \Spatie\MediaLibrary\Conversion\ConversionCollection $conversions
  * @param \Spatie\MediaLibrary\Media                           $media
  */
 public function performConversions(ConversionCollection $conversions, Media $media)
 {
     $tempDirectory = $this->createTempDirectory();
     $copiedOriginalFile = $tempDirectory . '/' . str_random(16) . '.' . $media->extension;
     app(Filesystem::class)->copyFromMediaLibrary($media, $copiedOriginalFile);
     if ($media->type == Media::TYPE_PDF) {
         $copiedOriginalFile = $this->convertToImage($copiedOriginalFile);
     }
     foreach ($conversions as $conversion) {
         $conversionResult = $this->performConversion($media, $conversion, $copiedOriginalFile);
         $renamedFile = MediaLibraryFileHelper::renameInDirectory($conversionResult, $conversion->getName() . '.' . $conversion->getResultExtension(pathinfo($copiedOriginalFile, PATHINFO_EXTENSION)));
         app(Filesystem::class)->copyToMediaLibrary($renamedFile, $media, 'conversions');
     }
     File::deleteDirectory($tempDirectory);
 }
 /**
  * Perform the given conversions for the given media.
  *
  * @param \Spatie\MediaLibrary\Conversion\ConversionCollection $conversions
  * @param \Spatie\MediaLibrary\Media $media
  */
 public function performConversions(ConversionCollection $conversions, Media $media)
 {
     $imageGenerator = $this->determineImageGenerator($media);
     if (!$imageGenerator) {
         return;
     }
     $tempDirectory = $this->createTempDirectory();
     $copiedOriginalFile = $tempDirectory . '/' . str_random(16) . '.' . $media->extension;
     app(Filesystem::class)->copyFromMediaLibrary($media, $copiedOriginalFile);
     foreach ($conversions as $conversion) {
         $copiedOriginalFile = $imageGenerator->convert($copiedOriginalFile, $conversion);
         $conversionResult = $this->performConversion($media, $conversion, $copiedOriginalFile);
         $renamedFile = MediaLibraryFileHelper::renameInDirectory($conversionResult, $conversion->getName() . '.' . $conversion->getResultExtension(pathinfo($copiedOriginalFile, PATHINFO_EXTENSION)));
         app(Filesystem::class)->copyToMediaLibrary($renamedFile, $media, true);
         event(new ConversionHasBeenCompleted($media, $conversion));
     }
     File::deleteDirectory($tempDirectory);
 }
 /**
  * @return string
  */
 public function getHumanReadableSizeAttribute()
 {
     return File::getHumanReadableSize($this->size);
 }
 /**
  * Get the headers to be used when copying the
  * given file to a remote filesytem.
  *
  * @param string $file
  *
  * @return array
  */
 public function getRemoteHeadersForFile($file)
 {
     $mimeTypeHeader = ['ContentType' => File::getMimeType($file)];
     $extraHeaders = $this->config->get('laravel-medialibrary.remote.extra_headers');
     return array_merge($mimeTypeHeader, $extraHeaders);
 }
Beispiel #7
0
 /**
  * Copy a file to the mediaLibrary for the given $media.
  *
  * @param string                     $file
  * @param \Spatie\MediaLibrary\Media $media
  * @param string                     $subDirectory
  * @param string                     $targetFileName
  */
 public function copyToMediaLibrary($file, Media $media, $subDirectory = '', $targetFileName = '')
 {
     $destination = $this->getMediaDirectory($media) . '/' . ($subDirectory != '' ? $subDirectory . '/' : '') . ($targetFileName == '' ? pathinfo($file, PATHINFO_BASENAME) : $targetFileName);
     $this->filesystems->disk($media->disk)->getDriver()->put($destination, fopen($file, 'r+'), ['ContentType' => File::getMimeType($file)]);
 }