VirtoCommerce.Platform.Data.Asset.AzureBlobProvider.Upload C# (CSharp) Method

Upload() public method

public Upload ( VirtoCommerce.Platform.Core.Asset.UploadStreamInfo request ) : string
request VirtoCommerce.Platform.Core.Asset.UploadStreamInfo
return string
        public string Upload(UploadStreamInfo request)
        {
            string result = null;
            var directoryPath = DefaultBlobContainerName;
            if (!string.IsNullOrEmpty(request.FolderName))
            {
                directoryPath = request.FolderName;
            }
            //Container name
            var containerName = GetContainerNameFromUrl(directoryPath);
            //directory path
            directoryPath = GetDirectoryPathFromUrl(directoryPath);

            var container = _cloudBlobClient.GetContainerReference(containerName);
            container.CreateIfNotExists(BlobContainerPublicAccessType.Blob);

            ICloudBlob blob = null;
            if (String.IsNullOrEmpty(directoryPath))
            {
                blob = container.GetBlockBlobReference(request.FileName);
            }
            else
            {
                directoryPath += directoryPath.EndsWith(_cloudBlobClient.DefaultDelimiter) ? request.FileName : _cloudBlobClient.DefaultDelimiter + request.FileName;
                blob = container.GetBlockBlobReference(directoryPath);
            }

            blob.Properties.ContentType = MimeTypeResolver.ResolveContentType(request.FileName);

            using (var memoryStream = new MemoryStream())
            {
                // upload to MemoryStream
                //memoryStream.SetLength(request.Length);
                request.FileByteStream.CopyTo(memoryStream);
                memoryStream.Position = 0;
                // fill blob
                blob.UploadFromStream(memoryStream);
            }
            result = blob.Uri.AbsolutePath.TrimStart('/');
            return result;
        }