2010-12-10 121 views
1

我正在为按需生成的PDF文件提供给移动设备的用户。我正在使用ASP.NET MVC 2,并使用Report Viewer本地报告导出为PDF生成PDF。动态PDF和Android默认浏览器

这给了我PDF内容的原始字节[]。

我然后用退回它

回报文件(PDF,mime类型, “FileName.pdf”);

请注意,我已经尝试过使用和不使用“FileName.pdf”默认名称来保存文件。

它适用于桌面浏览器和iPhone。我已经用WP 7模拟器进行了测试,看起来好像它可以正常读取PDF文件(它会提示输入正确的文件名来保存它)。

然而,Android似乎在抱怨。

我已经在Droid-X和Droid设备上进行了测试,它总是在浏览器下载结果中显示“下载失败”。在Opera Mini上,它提示保存文件(当使用包含文件名的返回方法时),并且PDF在保存到设备上后打开正常。

我可以通过以下方式返回已经存在于磁盘上的PDF文件:File(“〜/ filename.pdf”,“application/pdf”);所以它似乎只是动态PDF的问题。

有没有人处理过这个问题?

+0

您是否可以验证您是否在动态情况下以相同的方式设置了MIME类型?你可以窥探流量或以其他方式转储标题进行比较吗? – 2010-12-10 20:26:25

+0

mime类型被设置为application/pdf。我发现似乎正在发生的事情是,在资源发生POST后立即发生,Android设备(即使使用SDK中的模拟器执行)也为同一资源执行立即GET。 HTTP POST成功,但GET得到了404(因为我只是响应POST)。我不知道它为什么要求两次(每次使用不同的方法)。在启用HTTP GET之后,它可以正常工作,并且不会执行两个请求。我还没有弄清楚双重要求,但我确实取得了进展。 – 2010-12-10 21:55:45

+0

我有完全相同的问题。 Firefox和Opera Mobile的工作,但不是本地DroidX浏览器。顺便说一句,动态JPEG图像工作正常。我正在使用HTTPS,这似乎让事情变得更糟。我已经能够通过HTTP加载静态PDF文件。 MIME类型是正确的。看起来像我在Android论坛上看到的Android用户的常见问题。 – 2011-02-08 17:23:37

回答

0

我已经在Droid-X和Droid设备上进行了测试,它总是在浏览器下载结果中显示“下载失败”。

AFAIK,表示HTTP请求失败,或者MIME类型不是注册了ACTION_VIEW活动的MIME类型。请记住,DROID没有附带PDF查看器,并且我忘记了DROID X是否存在。

我同意克里斯,因为它觉得问题是无效的MIME类型。考虑使用curl或浏览器插件检查您的HTTP响应标头,并确认application/pdf确实是作为MIME类型返回的。

如果这没有帮助,并且您可以向我们提供一个要测试的URL,那也会有帮助。

+0

URL不能从公共Internet访问,但正如我在上面的评论中提到的那样,MIME类型是正确的,但它正在执行POST,然后是GET,并仅显示GET的响应(它是404 ,所以没有内容可以显示)。 – 2010-12-10 21:57:25

0

我从几年前就看到了这个问题ID,但是如果您只是想显示PDF,您可以将您的PDF URL嵌入到Google文档查看器中,然后引用该URL,然后应该在android浏览器上打开。

但是,只有在您的URL可公开访问时才能使用。