我使用此代码将文件上传到Azure blob存储,其中container
是我的CloudBlobContainer
public void SaveFile(string blobPath, Stream stream)
{
stream.Seek(0, SeekOrigin.Begin);
CloudBlockBlob blockBlob = container.GetBlockBlobReference(virtualPath);
blockBlob.Properties.ContentDisposition =
"attachment; filename=" + Path.GetFileName(virtualPath);
blockBlob.UploadFromStream(stream);
}
然后当用户点击我的网页中的文件时,我试图触发下载,提示他们保存/打开文件。我这样做是通过调用一个返回重定向到blob URL的Action。
public ActionResult LoadFile(string path)
{
string url = StorageManager.GetBlobUrlFromName(path);
return Redirect(url);
}
问题是这将打开浏览器中的文件,例如当我期望用户留在我的页面上但开始下载文件时,用户将重定向远离我的网站并在浏览器中显示.jpg文件。
答案 0 :(得分:1)
您可能错过的是在设置属性后调用blockBlob.SetProperties()
。
在我的代码上,它看起来像这样:
blob.CreateOrReplace();
blob.Properties.ContentType = "text/plain";
blob.Properties.ContentDisposition = "attachment; filename=" + Path.GetFileName(blobName);
blob.SetProperties(); // !!!
答案 1 :(得分:0)
实现目标的一种方法是让MVC操作从blob存储中获取图像并返回File,即:
## Get offsets for dodge
dodgeWidth <- 0.9
nFactors <- length(levels(chunk[,Places]))
chunk[, `:=` (dPlaces = (dodgeWidth/nFactors)*(as.numeric(Places) - mean(as.numeric(Places))))]
limits <- aes(ymax = Value+CI, ymin=Value-CI)
dodge <- position_dodge(width=0.9)
p <- ggplot(chunk, aes(colour=Places, fill=Places, y=Value, x=Year))
p + geom_linerange(limits, position=dodge) +
geom_point(position=dodge, size = 5) +
geom_segment(position=dodge, aes(y=Expected.Value, yend=Expected.Value,
x=as.numeric(Year)+dPlaces-0.1, xend=as.numeric(Year)+dPlaces+0.1)) +
geom_step(aes(group=Year, y=Reference.Value,
x=as.numeric(Year)+dPlaces), color="black", linetype=2)