我使用LiveCode社区服务器8.1.2的Windows Server 2016数据中心(运行Apache 2.4)“把二进制”,而不是LiveCode服务器上的二进制文件
我用下面的代码放在命令只输出文本
put header "content-disposition: attachment; filename=" & tFileName
put header "content-type: application/pdf"
put header "content-transfer-encoding: binary"
put url("binfile:" & "../resources/documents/" & tActualFileName into tBinaryData
put binary tBinaryData
当包含在浏览器调用的脚本中时,此代码在浏览器窗口中以文本形式返回数据,而不是可下载的pdf文件。
几个月前,我写了这段代码,它的工作,我今天回到它并没有。
我已经检查过两次,我确定它是正确的,但我不知道还有什么可以打破它。
我对 测试的Chrome 59在Windows 8.1专业版的Chrome 59在MacOS塞拉利昂10.12.5 Safari浏览器在iOS 10.3.2
任何帮助或指导将是最欢迎的。
编辑: 修正代码,以从第4行删除单词“二进制” - 这是产生其在的末端产生的文本输出的误差返回的结果 - 它没有解决问题 - 在响应头中仍然返回文本和“Content-Type:text/html”
编辑: 源的开头有2个空行使用查看源代码,Chrome上的Ctrl-U)
如果您可以从Chrome开发人员工具中的网络查看器获取实际的http响应并查看它发送了什么,可能会有用。 – JeffUK
杰出点杰夫 - 我现在已经添加了网络标题。在查看响应头文件“Content-Type:text/html; charset = windows-1252”看起来很可疑。虽然我在代码 –
中明确指定了“放置标题”内容类型:application/pdf“,并且没有内容处置...随机预感,您能否尝试首先声明内容类型?它应该不重要,但我必须总是把它放在第一位 – JeffUK