2

我正在开发一个应用程序,供我们的员工在旅途中进行票证跟踪。我们的票证有时会存储各种文件类型的附件。

其中许多是我们软件中的错误的文本文件或图像,这对于在旅途中检查票证时是必不可少的

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

iPhone在对话框中打开文件

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

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

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

4

1 回答 1

2

要使用应用程序打开:

  • 选择 Info-plist 文件
  • 右键单击 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>
  • 转到应用委托文件并实现以下功能:

-(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;
}
于 2013-01-10T06:23:40.140 回答