难以将Coldfusion / html页面呈现为docx扩展名而不是doc扩展名

问题描述 投票:1回答:1

我正在使用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文件,我可以查看/打开该文件。

html coldfusion docx doc coldbox
1个回答
0
投票
只是
claiming内容是一个docX文件,不会神奇地将其转换为一个;-)。 docX文件的结构与HTML完全不同。这是一个压缩的存档,其中包含一堆单独的XML文件。当MS Word尝试解析内容时,找不到所需的存档和目录结构。这就是为什么您会遇到错误。 

尝试使用原始内容类型application/msword。我不使用ColdBox,但是更改内容类型可以使用普通的<cfcontent><cfheader>(将文件名声明为.docX)。