我已经为 DocX 文件编写了一个自定义 httphandler,并且我正在尝试通过 iframe 显示这些文件。
这是我的控制器:
public ActionResult LoadDOC(string path)
{
var fsSource = new FileStream(path, FileMode.Open, FileAccess.Read);
return new FileStreamResult(fsSource, "application/vnd.openxmlformats-officedocument.wordprocessingml.document")
{
FileDownloadName = "newfile.docx"
};
}
}
需要更改文件名,以便 httphandler 可以获取它。这些文件驻留在没有扩展名的文件服务器上(它们被重命名为 guid)。例如:
"\\\\fileservername\\Documents\\811943a3-56f7-42cb-8450-1b8319a426b4\\633d9f3e-df99-408e-b59c-ec8efa4fa41f"
我无法更改文件驻留在服务器上的方式,我必须通过代码添加扩展名。
在 iframe 中执行上述操作时,会立即下载文件。然而,PDF 文件和文本文件可以正确呈现。
这是自定义的httphandler:
<add name="DOCXhandler" path="*.docx" verb="GET" type="MyProject.Handlers.DocxHandler, MyProject" preCondition="integratedMode" />
如何使用这种方法更改文件流扩展名,或者使用另一种方法来实现 iframe 中显示的文件的预期结果?
是否可以仅按内容类型更改处理程序?
编辑:为清楚起见的问题;
- 是否可以通过内容类型而不是文件扩展名使 http 处理程序工作?
- 在 iframe 中显示时,如何确保 filestreamresult 将我的自定义 httphandler 用于 .docx 文件?
- 我是以正确的方式解决这个问题,还是我错过了什么?