예제 #1
0
        private void AddMedia(string title, string fullpath, string teaser, DateTime?date, ContentFolder rootFolder)
        {
            var mediaFile = _contentRepository.GetDefault <DocumentFile>(rootFolder.ContentLink);

            mediaFile.Name        = title;
            mediaFile.Description = StripHtml(teaser);
            mediaFile.PubDate     = date == null ? DateTime.Today : date.Value;

            var extension = Path.GetExtension(fullpath);

            var blob = _blobFactory.CreateBlob(mediaFile.BinaryDataContainer, extension);

            var fileData = File.ReadAllBytes(fullpath);

            using (var s = blob.OpenWrite())
            {
                var w = new BinaryWriter(s);
                w.Write(fileData);
                w.Flush();
            }

            mediaFile.BinaryData = blob;

            _contentRepository.Save(mediaFile, SaveAction.Publish);
        }
        private void WriteBlobToStorage(string name, byte[] data, MediaData md)
        {
            var blob = _blobfactory.CreateBlob(md.BinaryDataContainer, Path.GetExtension(name));

            using (var s = blob.OpenWrite())
            {
                BinaryWriter w = new BinaryWriter(s);
                w.Write(data);
                w.Flush();
            }
            md.BinaryData = blob;
        }
예제 #3
0
        public Task <string> SaveAsync(Stream fileStream, string extension, string fileGroups, string owner)
        {
            if (string.IsNullOrWhiteSpace(fileGroups))
            {
                throw new ArgumentNullException(nameof(fileGroups));
            }
            if (string.IsNullOrWhiteSpace(extension))
            {
                throw new ArgumentNullException(nameof(extension));
            }
            if (fileStream == null)
            {
                throw new ArgumentNullException(nameof(fileStream));
            }

            var fileGroupArray = fileGroups.Split('/').Where(n => !string.IsNullOrWhiteSpace(n));
            var groupArray     = fileGroupArray as string[] ?? fileGroupArray.ToArray();
            var groupFolder    = GetGroupFolder(groupArray);

            //Get a suitable MediaData type from extension
            var mediaType   = _mediaResolver.GetFirstMatching(extension);
            var contentType = _contentTypeRepo.Load(mediaType);
            var mediaData   = _contentRepo.GetDefault <MediaData>(groupFolder.ContentLink, contentType.ID);

            var fileName = $"{DateTime.Now.Ticks}_{Guid.NewGuid().ToString()}{extension}";

            mediaData.Name      = fileName;
            mediaData.CreatedBy = owner;

            //Create a blob in the binary container
            var blob = _blobFactory.CreateBlob(mediaData.BinaryDataContainer, extension);

            blob.Write(fileStream);

            //Assign to file and publish changes
            mediaData.BinaryData = blob;
            _contentRepo.Save(mediaData, SaveAction.Publish, AccessLevel.NoAccess);
            return(Task.FromResult($"/globalassets/{string.Join("/", groupArray)}/{fileName}"));
        }