[英]How can i compress video during upload on Azure BLOB storage using javascript in asp.net?
[英]Why can't I download an Azure Blob using an asp.net core application published to Azure server
我试图从Azure存储帐户容器下载Blob。 当我在本地运行应用程序时,我得到正确的“下载”文件夹C:\\ Users \\ xxxx \\ Downloads。 当我将应用程序发布到Azure并尝试下载该文件时,我收到错误。 我尝试了各种“Knownfolders”,有些返回空字符串,其他人返回Azure服务器上的文件夹。 我能够正常上传文件,列出容器中的文件,但我正在努力下载文件。
string conn =
configuration.GetValue<string>"AppSettings:AzureContainerConn");
CloudStorageAccount storageAcct = CloudStorageAccount.Parse(conn);
CloudBlobClient blobClient = storageAcct.CreateCloudBlobClient();
CloudBlobContainer container =
blobClient.GetContainerReference(containerName);
Uri uriObj = new Uri(uri);
string filename = Path.GetFileName(uriObj.LocalPath);
// get block blob reference
CloudBlockBlob blockBlob = container.GetBlockBlobReference(filename);
Stream blobStream = await blockBlob.OpenReadAsync();
string _filepath = _knownfolder.Path + "\\projectfiles\\";
Directory.CreateDirectory(_filepath);
_filepath = _filepath + filename;
Stream _file = new MemoryStream();
try
{
_file = File.Open(_filepath, FileMode.Create, FileAccess.Write);
await blobStream.CopyToAsync(_file);
}
finally
{
_file.Dispose();
}
预期的最终结果是文件最终位于用户“Downloads”文件夹中的文件夹中。
既然您正在谈论发布到Azure,那么代码可能来自Web应用程序,对吧? 并且Web应用程序的代码在服务器上运行 。 这意味着代码正在尝试将blob下载到运行Web应用程序的服务器 。
要向用户提供下载链接以使其能够下载文件,请使用FileStreamResult
表示ActionResult,执行时将文件从流写入响应。
一个(伪代码)示例:
[HttpGet]
public FileStreamResult GetFile()
{
var stream = new MemoryStream();
CloudBlockBlob blockBlob = container.GetBlockBlobReference(filename);
blockBlob.DownloadToStream(stream);
blockBlob.Seek(0, SeekOrigin.Begin);
return new FileStreamResult(stream, new MediaTypeHeaderValue("text/plain"))
{
FileDownloadName = "someFile.txt"
};
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.