コード例 #1
0
        public async Task <LockedStream> OpenLockedStreamAsync(string path, FileAccess access)
        {
            var container = await GetContainerAsync();

            var blockBlob = container.GetBlockBlobReference(path);

            var blobStream = access == FileAccess.Read
                    ? await blockBlob.OpenReadAsync()
                    : await blockBlob.OpenWriteAsync();

            var result = LockedStream.FromStream(path, blobStream, access, null);

            return(result);
        }
コード例 #2
0
        public override async Task <LockedStream> OpenLockedStreamAsync(string path, FileAccess access)
        {
            if (access == FileAccess.Read && await ExistsAsync(path))
            {
                return(await Disk.OpenLockedStreamAsync(path, access));
            }
            else
            {
                var lockedStream = await Disk.OpenLockedStreamAsync(path, FileAccess.ReadWrite); //overwrite access to read/write so we can upload online

                return(LockedStream.FromStream(path, lockedStream, access, onCloseAction: s =>
                {
                    var(objInfo, compressed) = MapPathToObjectInfo[path];
                    UploadFileAsync(path, objInfo, compressed, s).Wait();
                }));
            }
        }