对话框中的Javascript + iPhone打开文件

时间:2012-06-20 22:09:16

标签: javascript iphone html5 mobile sencha-touch

我正在开发一个应用程序,供我们的员工随时随地进行票务跟踪。我们的门票随时附有各种文件类型的附件。

其中许多是我们软件中的文本文件或错误图像,这对于在旅途中检票时的票证至关重要

在Javascript中,我如何让网络浏览器提示用户“你想用什么打开这个文件?”对话?很像以下内容:

iPhone open file in dialog

我甚至不知道这是否可以通过Javascript实现,但如果是这样的话,那将会对我们有很大的帮助

我知道我们可以直接在Javascript中显示图像,但我们更愿意将文件推迟到设备并让它使用正确的程序处理它(如果文件类型不是图像)

哦,我们正在使用Sencha Touch作为应用程序,以防提供此类任何功能(虽然我在文档中找不到任何功能)

1 个答案:

答案 0 :(得分:2)

使用应用打开:

  • 选择信息播放文件
  • 右键单击plist文件
  • 打开为...并选择源代码
  • 将此xml代码粘贴到文件中的某个位置(例如,我将它放在包名称下面)

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>supportedExtensions</string>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>LSHandlerRank</key>
        <string>Alternate</string>
        <key>LSIsAppleDefaultForType</key>
        <true/>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.comma-separated-values-text</string>
        </array>
    </dict>
</array>
  • 转到app委托文件并执行以下功能:

-(BOOL) application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    // this url contain the -> your file url
}

请记住:处理你的应用程序的内存是你的最佳选择。该文件将被复制到您的应用程序文档目录空间中。你需要管理它。如果您不再需要该文件,您的应用程序将需要将其删除。

在JS中阅读文件:

在javascript中实施以下内容:

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);

function gotFS(fileSystem) {
    fileSystem.root.getFile("exportBHC.csv", {create: true}, gotFileEntry, fail);
}

function gotFileEntry(fileEntry) {
    fileEntry.file(gotFile, fail);
}

function gotFile(file){
    readAsText(file);
}

function readAsText(file) {
    var reader = new FileReader();

    reader.onloadend = function(evt) {
        var sqlQuery = {};
        var results = evt.target.result;
}