/// <summary> /// Provide the url to download the file /// The URL is based on the blob uri + SharedAccessToken /// </summary> /// <param name="fileName">Name of the file.</param> /// <param name="password">The password.</param> /// <returns></returns> public string GetFileUri(string senderName, string password) { // remove bad characters from sender name string safeSenderName = GetSafeSenderName(senderName); var files_ds = new FilesDataSource(); var fileInfo = files_ds.GetFile(password + safeSenderName); if (fileInfo == null) { return string.Empty; } var sas = SharedAccessToken.GenerateSAS(ContainerName, fileInfo.BlobUri); return fileInfo.BlobUri + sas; }
/// <summary> /// Upload a file to the blobs storage and create a record in the files table /// </summary> /// <param name="fileToLoad"></param> /// <returns>The token to be used to access the file later on</returns> public UploadFileTokenMessage UploadFile(UploadFileContentMessage fileToLoad) { // generate random 6 digits password string password = GeneratePassword(); // remove bad characters from sender name string safeSenderName = GetSafeSenderName(fileToLoad.SenderName); using (MemoryStream memoryStream = new MemoryStream()) { Utils.CopyStream(fileToLoad.FileByteStream, memoryStream); memoryStream.Seek(0, SeekOrigin.Begin); // make sure stream is a valid deck if (!IsLegalDeckFile(memoryStream)) { return new UploadFileTokenMessage() { Password = string.Empty }; } memoryStream.Seek(0, SeekOrigin.Begin); // save stream as blob var blobUri = CreateBlob(memoryStream, password + safeSenderName); var files_ds = new FilesDataSource(); var token = files_ds.AddFile(password + safeSenderName, ContainerName, blobUri); } return new UploadFileTokenMessage() { Password = password }; }