Для тех, кто столкнулся с той же проблемой, что и я.
Function DownloadBlobSnapshot(FileName As String, Extension As String) As ActionResult
Dim storageAccount As CloudStorageAccount
Dim storageConnectionString As String = ConfigurationManager.AppSettings("StorageConnectionString")
Dim accountName As String = myaccountname
Dim accountKey As String = myaccountkey
Dim cred = New StorageCredentials(accountName, accountKey)
Dim account = New CloudStorageAccount(cred, True)
Dim client = account.CreateCloudBlobClient()
Dim container = client.GetContainerReference("myfilename")
Dim fileStream As New MemoryStream
fileStream.Position = 0
Dim listOfBlobs As IEnumerable = container.ListBlobs(Nothing, True, BlobListingDetails.Snapshots)
Try
If CloudStorageAccount.TryParse(storageConnectionString, storageAccount) Then
For Each item In listOfBlobs
Dim blockBlob As CloudBlockBlob = container.GetBlockBlobReference((CType(item, CloudBlockBlob)).Name)
blockBlob.DownloadToStream(fileStream)
Response.Clear()
Response.ContentType = "application/force-download"
Response.AddHeader("content-disposition", "inline; filename=name_you_file.pdf")
Response.BinaryWrite(fileStream.ToArray)
Response.End()
Return New FileStreamResult(fileStream, "application/pdf")
Next
End If
Catch ex As Exception
End Try
End Function
Обновлено: 29.11.118
Function DownloadBlobSnapshot(FilePath As String, LabCompany As String, FileName As String) As ActionResult
Dim storageAccount As CloudStorageAccount
Dim cloudBlobContainer As CloudBlobContainer = Nothing
Dim sourceFile As String = Nothing
Dim destinationFile As String = Nothing
Dim storageConnectionString As String = (CASAuthentication.Decrypt(Configs.BlobConnectionString))
Dim url As String = ""
Dim sasToken As String = ""
If CloudStorageAccount.TryParse(storageConnectionString, storageAccount) Then
Try
Dim cloudBlobClient As CloudBlobClient = storageAccount.CreateCloudBlobClient()
cloudBlobContainer = cloudBlobClient.GetContainerReference(LabCompany.ToLower)
If cloudBlobContainer.Exists() Then
Dim cloudBlockBlob As CloudBlockBlob = cloudBlobContainer.GetBlockBlobReference((FileName))
If cloudBlockBlob.Exists Then
url = cloudBlockBlob.Uri.AbsoluteUri()
Dim sharedPolicy As SharedAccessBlobPolicy = New SharedAccessBlobPolicy() With {
.SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(Integer.Parse(ConfigurationManager.AppSettings("PDFTimeOut"))),
.Permissions = SharedAccessBlobPermissions.Read Or SharedAccessBlobPermissions.Write
}
sasToken = cloudBlockBlob.GetSharedAccessSignature(sharedPolicy)
End If
End If
Return Json(New With {.success = True, .url = url + sasToken}, JsonRequestBehavior.AllowGet)
Catch ex As Exception
Return Json(New With {.success = False, .message = ex.ToString}, JsonRequestBehavior.AllowGet)
Finally
End Try
Else
Return Json(New With {.success = False, .message = "Failed to receive report data. Please try again later."}, JsonRequestBehavior.AllowGet)
End If
End Function
Отображение с использованием ajax
var tabledata = {mydata: data}
$.ajax({
cache: false,
type: "POST",
url: "/Home/DownloadBlobSnapshot",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(tabledata),
success: function (result) {
var e = result.url
//e.substr(0, e.lastIndexOf("/"))
e = "http://docs.google.com/viewer?url=" + encodeURIComponent(e) + "&embedded=true";
popitup(e);
},
error: function () {
}
});