我需要从服务器下载文件,但如果可能,请打开内联。我现在正在做;
Response.AddHeader("Content-Disposition", string.Format("inline; filename={0}", documentFileName));
result = new FileStreamResult(new FileStream(documentFilePath, FileMode.Open), "application/msword");
我现在已将application / msword放在那里,因为这就是我遇到的问题。当我单击单词文档上的“打开”时,就好像文档会多次调用该操作,但是没有会话而没有数据库,因此它崩溃了。当用户运行它时,他们看到一个长时间挂起,“下载”对话框最终出现在单词中,他们必须取消它。该文件存在且有效,但这是不可取的。
Pdfs,pngs等下载很好。任何人都可以解释这种行为,并给我一些关于如何修复它的提示吗?
更新
行动基本上是这样的;
[HttpPost]
public FileResult View(int id, int source)
{
var document = GetDocumentFromDatabase(id, source);
documentFilePath = Path.Combine( documentsDirectory, document.Name);
documentName = document.Name;
Response.AddHeader("Content-Disposition", string.Format("inline; filename={0}", documentFileName));
result = new FileStreamResult(new FileStream(documentFilePath, FileMode.Open), "application/msword");
return result;
}
我已经把它缩减了,因为我无法分享细节,但完整的想法就在那里。
答案:
我查找了可用的内容类型,在那里我已经定义了文件是内联还是附件,当我检测到word文档时,我将其设置为附件。没有更多的错误。 PDF仍在浏览器中打开,因为我将其设置为内联。
答案 0 :(得分:1)
我用:
public ActionResult GetAttachment(int id)
{
var attachment = _repository.GetAttachByID(id);
if (attachment != null)
{
Response.AppendHeader("Content-Disposition",string.Format("inline; filename={0}",attachment.FileName));
return File(attachment.File, attachment.MimeType, attachment.FileName);
}
else
{
return null;
}
}
此致