/**
  * @param string $container
  * @param string $blobName
  * @param array  $params
  *
  * @throws \Exception
  * @return void
  */
 public function streamBlob($container, $blobName, $params = [])
 {
     try {
         $this->checkConnection();
         /** @var GetBlobResult $blob */
         $blob = $this->blobConn->getBlob($container, $blobName);
         $props = $blob->getProperties();
         header('Last-Modified: ' . gmdate(static::TIMESTAMP_FORMAT, $props->getLastModified()->getTimestamp()));
         header('Content-Type: ' . $props->getContentType());
         header('Content-Transfer-Encoding: ' . $props->getContentEncoding());
         header('Content-Length:' . $props->getContentLength());
         $disposition = isset($params['disposition']) && !empty($params['disposition']) ? $params['disposition'] : 'inline';
         header("Content-Disposition: {$disposition}; filename=\"{$blobName}\";");
         fpassthru($blob->getContentStream());
         //            $this->blobConn->registerStreamWrapper();
         //            $blobUrl = 'azure://' . $container . '/' . $blobName;
         //            readfile($blobUrl);
     } catch (\Exception $ex) {
         if ('Resource could not be accessed.' == $ex->getMessage()) {
             $status_header = "HTTP/1.1 404 The specified file '{$blobName}' does not exist.";
             header($status_header);
             header('Content-Type: text/html');
         } else {
             throw $ex;
         }
     }
 }
 /**
  * @param $source
  * @param BlobRestProxy $mediaServiceRelatedProbProxy
  * @param Asset $asset
  * @param bool|false $overrideFilename
  * @return AssetFile
  */
 public function copyFromBlobUrlToAsset($source, BlobRestProxy $mediaServiceRelatedProbProxy, Asset $asset, $overrideFilename = false)
 {
     // Copy blob:
     $assetContainer = $this->getAssetContainerName($asset);
     $filename = $overrideFilename ? $overrideFilename : $mediaServiceRelatedProbProxy->getBasename($source);
     $mediaServiceRelatedProbProxy->copyExternalBlob($assetContainer, $filename, $source);
     // Create asset file:
     $assetFile = new AssetFile($filename, $asset->getId());
     $assetFile->setIsPrimary(false);
     $assetFile->setIsEncrypted(false);
     //$assetFile->setMimeType($sourceProperties->getContentType());
     //$assetFile->setContentFileSize($sourceProperties->getContentLength());
     $assetFile = $this->createAssetFile($assetFile);
     return $assetFile;
 }