我不确定这里出了什么问题。我正在尝试显示当前存储在Azure文件存储中的图像。如果我直接在我的浏览器中链接,那么它似乎下载就好了。但是,当我将网址放在img src
中时,我在控制台中收到此错误。
以下是我目前正在检索文件的网址:
public static string GetFile(Models.Core.Document file, string friendlyFileName = null)
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();
CloudFileShare share = fileClient.GetShareReference("organizations");
CloudFileDirectory fileDirectory = share.GetRootDirectoryReference().GetDirectoryReference("Org_" + file.OrgId);
// Get the file
var azureFile = (CloudFile)fileDirectory.ListFilesAndDirectories().First(f => f.Uri.ToString() == file.FilePath);
// Set up access policy so that the file can be viewed
var sasConstraints = new SharedAccessFilePolicy();
sasConstraints.SharedAccessStartTime = DateTime.UtcNow.AddMinutes(-5);
sasConstraints.SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(15);
sasConstraints.Permissions = SharedAccessFilePermissions.Read;
// Access token
var sasFileToken = string.Empty;
if (friendlyFileName != null){
sasFileToken = azureFile.GetSharedAccessSignature(sasConstraints, new SharedAccessFileHeaders()
{
ContentDisposition = "attachment; filename=" + friendlyFileName
});
}
else
{
sasFileToken = azureFile.GetSharedAccessSignature(sasConstraints);
}
// Return url to file with appended token
return azureFile.Uri + sasFileToken;
}
“不支持条件标头”究竟是什么意思?
答案 0 :(得分:3)
"究竟是什么意思?不支持条件标题"?
根据我的测试,您提到的代码中没有问题。根据Azure文件存储Get File API,没有指定支持条件标头。因此,如果请求带有 If 条件标头,则Azure文件服务器不会接受该请求。它有时会发生在浏览器端,因为某些情况下的浏览器会附加if condition
标头。
如果Azure blob可以接受,请尝试使用Azure blob。然后它将按预期工作。支持条件标头的get blob api。
此操作还支持使用条件标头仅在满足指定条件时读取blob。有关更多信息,请参阅为Blob服务操作指定条件标头。
答案 1 :(得分:0)
我们遇到了类似的问题,我们开始在查询字符串中添加时间戳。由于每次调用都会更改时间戳,因此浏览器将不会缓存,因此不会遇到问题。尽管我同意blob可能是更好的解决方案,尤其是因为您使用Azure AD