1

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

如果我使用上述 URL 调用文档查看器,它会按预期工作,请参阅: 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,而且做得很好,所以我可能会选择那个。但是,出于好奇,我仍然想知道下面的代码有什么问题。因此,任何建议都非常受欢迎。

4

3 回答 3

2

您是否尝试过使用 .ppt 文件扩展名而不是 .php 来命名 php 文件?您的服务器是否会处理没有 .php 文件扩展名的文件中的 php 代码是另一个问题。但 Google Docs 可能会简单地拒绝加载任何带有 .php 扩展名的文件。

于 2010-10-26T22:39:51.913 回答
1

将 Content-Type 中的 T 大写。我还提供了 Content-Length 标头。我的文件处理程序现在可以工作了。

于 2011-08-30T21:13:36.207 回答
0

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

于 2010-10-22T11:17:01.750 回答