public async Task UploadFileAsync(MobileServiceFileMetadata metadata, IMobileServiceFileDataSource dataSource, StorageToken storageToken) { CloudBlockBlob blob = GetBlobReference(storageToken, metadata.FileName); using (var stream = await dataSource.GetStream()) { await blob.UploadFromStreamAsync(stream); metadata.LastModified = blob.Properties.LastModified; metadata.FileStoreUri = blob.Uri.LocalPath; stream.Position = 0; metadata.ContentMD5 = GetMD5Hash(stream); } }
private CloudBlockBlob GetBlobReference(StorageToken token, string fileName) { CloudBlockBlob blob = null; if (token.Scope == StorageTokenScope.File) { blob = new CloudBlockBlob(new Uri(token.ResourceUri, token.RawToken)); } else if (token.Scope == StorageTokenScope.Record) { var container = new CloudBlobContainer(new Uri(token.ResourceUri, token.RawToken)); blob = container.GetBlockBlobReference(fileName); } return blob; }
public Task<Uri> GetFileUriAsync(StorageToken storageToken, string fileName) { CloudBlockBlob blob = GetBlobReference(storageToken, fileName); return Task.FromResult(new Uri(blob.Uri, storageToken.RawToken)); }
public async Task DownloadFileToStreamAsync(MobileServiceFile file, Stream stream, StorageToken storageToken) { CloudBlockBlob blob = GetBlobReference(storageToken, file.Name); await blob.DownloadToStreamAsync(stream); }