iPhone UIWebView : loadData does not work with certain types (Excel, MSWord、PPT、RTF)

标签 iphone uiwebview webkit

我的任务是在 OS 3.x 的 iPhone 上显示支持的文档类型,例如 .pdf、.rtf、.doc、.ppt、.png、.tiff 等。

现在,我已将这些文件仅加密存储在磁盘上。出于安全原因,我想避免将它们未加密地存储在磁盘上。

因此,我更喜欢使用 loadData:MIMEType:textEncodingName:baseURL: 而不是 loadRequest: 来显示文档,因为 loadData 允许我传递 NSData 对象中的内容,即我可以解密内存中的文件,而无需将其存储在磁盘上,因为使用 loadRequest 时需要它。

问题是 loadData 似乎不适用于所有文件类型:

测试表明,所有图片类型似乎都可以正常工作,PDF 也是如此,而更复杂的类型则不然。我收到如下错误:

NSURLErrorDomain Code=100
NSURLErrorDomain Code=102

WebView 似乎需要一个真正有效的 URL 来以文件形式访问文档,尽管我已经通过 NSData 对象提供了所有内容。

这是我用来显示内容的代码:

[webView loadData:data MIMEType:type textEncodingName:@"utf-8" baseURL:nil];

mime-type 已正确设置,例如.doc 文件的“application/msword”。

有谁知道如何让 loadData 与 loadRequest 支持的所有类型一起使用?或者,有什么方法可以让我知道哪些类型可以肯定(即苹果官方批准的)与loadData一起工作?然后我可以双重工作,仅为 loadData 不喜欢的情况创建临时未加密文件。

更新

看来我不是第一个遇到这种情况的人。请参阅此处:

http://osdir.com/ml/iPhoneSDKDevelopment/2010-03/msg00216.html

所以,我想,这就是现状,我对此无能为力。

有人提出了一种可能有效的解决方法:

http://osdir.com/ml/iPhoneSDKDevelopment/2010-03/msg00219.html

基本上,这个想法是提供一个小型的 http 服务器来提供文件服务(在我的例子中是从内存中),然后使用 loadRequest。不过,这可能会占用更多的内存,因为服务器和 webview 都可能将内存中的全部内容作为两个副本保存,而不是使用 loadData,后者宁愿共享相同的数据对象。 (请注意,我必须将解密的数据保存在内存中,这就是这里的重点)。

最佳答案

我遇到了一个非常类似的问题(但是我从服务器获取文件)并看到你的帖子并认为这是一个死胡同,然后偶然开始在设备(iPad,在本例中)上进行实验,它当我将 baseURL 作为我用来从服务器获取它的内容时,它起作用了,但在模拟器上不起作用。我会尝试一下,否则我会向苹果提交错误报告。

关于iPhone UIWebView : loadData does not work with certain types (Excel, MSWord、PPT、RTF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2764709/

相关文章:

iphone - 无响应的加速度计数据

ios - Xcode 5 - iOS - 如何在没有 Storyboard 或 XIB 的情况下在 Xcode 中创建 View Controller 以及如何将其配置为 AppDelegate 作为 Root View

javascript - 为什么URI-encoded ('#' ) anchors会导致404,JS中如何处理?

iphone - MkPolygon : Display popup bubble on tap

iphone - 自定义左右 UISegmentedControl 按钮

iphone - UIWebView 崩溃

ios - TabBarController 内的 UIWebView 导致内容位于选项卡栏后面

javascript - 有没有什么方法可以在 JavaScript 运行时处理低内存情况?

animation - 为什么这个简单的 CSS 动画不起作用?

iphone - 在应用程序中预存大量数据