我正在开发一个应用程序,供我们的员工用于随时随地跟踪票证。我们的票证有时会存储各种文件类型的附件。
其中许多是我们软件中的错误的文本文件或图像,这些对于在旅途中查看票证时的票证至关重要
在 Javascript 中,如何让 Web 浏览器提示用户“您想用什么打开此文件?”对话?非常类似于以下内容:
我什至不知道这是否可以通过 Javascript 实现,但如果可以的话,这确实会对我们有很大帮助
我知道我们可以直接在 Javascript 中显示图像,但我们更愿意将文件推迟到设备并让它使用正确的程序打开它(如果文件类型不是图像)
哦,我们正在为应用程序使用 Sencha Touch,以防提供此类功能(尽管我在文档中找不到任何功能)
最佳答案
使用应用程序打开:
- 选择 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>
- 转到应用委托(delegate)文件并实现以下功能:
-(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;
}
关于Javascript + iPhone 在对话框中打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11128920/