如果文件是由php脚本提供的,如何使用google docs viewer在网页上嵌入ppt文件?

时间:2010-10-22 09:41:44

标签: php http-headers google-docs-api

我已将MS powerpoint文件上传到我的服务器,并且我正在尝试使用Google文档查看器(http://docs.google.com/viewer)将其显示在网页上。 该文件可在此处获得: http://elgg.wamped.org/test.ppt

如果我使用上述网址调用文档查看器,它按预期工作,请参阅: http://docs.google.com/viewer?url=http%3A%2F%2Felgg.wamped.org%2Ftest.ppt

但是当我试图通过一个非常简单的PHP脚本向观众提供相同的文件时,它无法使用不太有用的错误消息进行渲染:“抱歉,我们无法在此处生成文档视图时间“,见: http://docs.google.com/viewer?url=http%3A%2F%2Felgg.wamped.org%2Freadfile.php

提供文件的脚本如下:

<?php
  header('Content-type: application/vnd.ms-powerpoint');
  header('Content-Disposition: attachment; filename="test.ppt"');
  readfile('test.ppt');
?>

我尝试使用各种标头字段,如Pragma和Cache-Control,但没有任何帮助。我也尝试切片输出文件并以块的形式回显,这也没有任何好处。检查了服务器上的apache日志,检查了响应头,一切似乎都没问题。

任何想法我在这里做错了什么?

编辑虽然我还没有找到解决这个问题的方法,但我偶然发现了一个与Google Docs Viewer相同的网站(或者看起来实际上做得更多)。 http://embedit.in支持各种文件类型,有一个API,并且可以很好地完成工作,所以我可能会选择那个。但是,出于好奇,我仍然想知道下面这段代码有什么问题。所以任何建议都非常受欢迎。

3 个答案:

答案 0 :(得分:2)

您是否尝试使用.ppt文件扩展名而不是.php命名php文件?您的服务器是否将在没有.php文件扩展名的文件中处理PHP代码是另一个问题。但Google Docs可能只是拒绝加载任何扩展名为.php的文件。

答案 1 :(得分:1)

将内容类型中的T大写。我还提供了Content-Length标头。我的文件处理程序现在正常工作

答案 2 :(得分:0)

看起来你可能会遗漏一些标题。您可能还想查看该文件是否与readfile.php位于同一目录中,因为Google可能会将每个文件存储在远程服务器上。