我正在使用ColdBox / ORM编写应用程序。对于我的问题,我正在尝试使用.docx文件扩展名而不是.doc文件扩展名呈现/下载HTML代码。下载渲染的文档并尝试将其打开时,我会收到一个弹出窗口,显示
Word在***********中发现了不可读的内容。你想恢复吗该文件的内容?
。cfm页面
在我要渲染的文件中,html标记中包含以下内容
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40"
。cfc页面
原始代码
event.renderData(data=fileReadBinary('fileName.doc')
, contentType='application/msword'
, isBinary=true);
新代码
event.renderData(data=fileReadBinary('fileName.docx')
, contentType='application/vnd.openxmlformats-officedocument.wordprocessingml.document'
, isBinary=true);
我期望的输出是将.cfm
文件的内容呈现在.docx
文件中,并能够打开和查看它。实际发生的是,我出现一些弹出窗口,显示“单词在***********
中发现了不可读的内容。您要恢复此文档的内容吗?”使用是/否按钮。即使选择是,我也看不到文件的内容。但是,当前代码已成功呈现为.doc
文件,我可以查看/打开该文件。
claiming内容是一个docX文件,不会神奇地将其转换为一个;-)。 docX文件的结构与HTML完全不同。这是一个压缩的存档,其中包含一堆单独的XML文件。当MS Word尝试解析内容时,找不到所需的存档和目录结构。这就是为什么您会遇到错误。尝试使用原始内容类型
application/msword
。我不使用ColdBox,但是更改内容类型可以使用普通的<cfcontent>
和<cfheader>
(将文件名声明为.docX
)。