Ejemplo n.º 1
0
        public void Upload(Stream stream)
        {
            if (SynchronizationHelper.Synchronizing())
            {
                Reinitialize();
                if (Exists())
                {
                    return;
                }
            }

            IDictionary <string, string> metadata;

            lock (_lock)
            {
                var exists = ExistsInternal();

                if (!exists)
                {
                    _attributes = new BlobAttributes
                    {
                        Metadata = new Dictionary <string, string> {
                            { BlobMetadataEnum.DateCreated.ToString(), DateTime.UtcNow.ToString() }
                        }
                    };
                    metadata = _attributes.Metadata;
                }
                else
                {
                    SetMetadataAttributeInternal(BlobMetadataEnum.DateCreated, DateTime.UtcNow.ToString());
                    metadata = GetAttributeInternal(a => a.Metadata);
                }

                _attributes = _cloudBlobService.Upload(Path, metadata, stream);

                stream.Seek(0, SeekOrigin.Begin);
                _blobCacheService.Add(Path, stream, _attributes.LastModified);

                SetExists(true);
                _attributesFetched = true;
            }
        }
Ejemplo n.º 2
0
        public void Append(byte[] content)
        {
            lock (_lock)
            {
                var data = GetInternal();

                SetMetadataAttributeInternal(BlobMetadataEnum.LastWriteTime, DateTime.UtcNow.ToString());

                using (var stream = new System.IO.MemoryStream())
                {
                    stream.Write(data, 0, data.Length);
                    stream.Write(content, 0, content.Length);
                    stream.Seek(0, SeekOrigin.Begin);

                    _attributes = _cloudBlobService.Upload(Path, GetAttribute(a => a.Metadata), stream);

                    _lastRefresh = DateTime.UtcNow;
                    stream.Seek(0, SeekOrigin.Begin);
                    _blobCacheService.Add(Path, stream, _attributes.LastModified);
                }
            }
        }