/** * @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; }