gpt4 book ai didi

azure - 如何将 Azure blob 文件下载到下载文件夹中,而不是在浏览器中

转载 作者:行者123 更新时间:2023-12-03 05:37:49 25 4
gpt4 key购买 nike

我想在页面中放置一个按钮,当用户单击该按钮时,我想将azure blob下载到下载文件夹中。

  1. 我生成 blob 链接 url:

    var downloadLink = blobService.getUrl('mycontainer', 'myblob', 'SAS_TOKEN');

  2. 一旦我得到这个网址,我就会使用这个解决方案来下载:

    var link = document.createElement("a");
    link.download = name;
    link.href = url;
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);

我在S3中使用了相同的方法,文件可以在同一个浏览器中下载并放入下载文件夹中,但是对于Azure,当我使用此解决方案时,它只是打开一个新选项卡并在浏览器中显示内容。

谁能帮忙看看这是为什么?如何下载文件而不是在浏览器中显示内容?

生成的url是:

https://myBucket.blob.core.windows.net/mycontainer/1000/rawEvents.json?se=2022-04-20T23%3A59%3A59Z&sp=rwdlacup&sv=2018-03-28&ss=b&srt=sco&sig=EzsjwqKfYmwwUo2n1ySkCBAsTfW35ic8M8F6tfuXEPo%3D

如果点击这个url,也可以读取内容。

最佳答案

您需要确保 Content-TypeContent-Disposition header 具有触发浏览器下载文件的值。尤其是内容处置很重要。

Content-Type: application/octet-stream
Content-Disposition: attachment

您可以设置内容处置 on the blob itself

        var blob = container.GetBlobReference(userFileName);
blob.Properties.ContentDisposition = "attachment";
blob.SetProperties();

add it to your SAS token (另请参阅相应的 blog post )。

        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("videos");
string userFileName = service.FirstName + service.LastName + "Video.mp4";
CloudBlockBlob blob = container.GetBlockBlobReference(userFileName);
SharedAccessBlobPolicy policy = new SharedAccessBlobPolicy()
{
Permissions = SharedAccessBlobPermissions.Read,
SharedAccessExpiryTime = DateTime.UtcNow.AddHours(1)
};
SharedAccessBlobHeaders blobHeaders = new SharedAccessBlobHeaders()
{
ContentDisposition = "attachment; filename=" + userFileName
};
string sasToken = blob.GetSharedAccessSignature(policy, blobHeaders);
var sasUrl = blob.Uri.AbsoluteUri + sasToken;//This is the URL you will use. It will force the user to download the video.

关于azure - 如何将 Azure blob 文件下载到下载文件夹中,而不是在浏览器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61168038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com