是否可以在没有HTTP请求或<input />的情况下从HTML app目录中检索文本文件?

时间:2015-04-03 04:40:32

标签: javascript jquery html get src

我正在开发一个打算在本地运行的HTML / javascript应用程序。

处理img标签时,可以将src属性设置为具有相对路径的文件名,从而快速轻松地从应用程序目录加载图像。我想使用类似的方法应用程序的目录中检索文本文件

我使用过TideSDK,但重量较轻。我知道HTTP请求,但是如果我没记错的话,只有Firefox对我使用它进行本地文件访问(尽管使用src访问本地图像似乎不是问题)。我也知道FileReader对象;但是,我的界面要求我加载文件基于文件名不基于文件浏览器选择,与<input type="file">一样。

有没有办法完成这种类型的文件访问,还是我坚持使用上面提到的方法?

3 个答案:

答案 0 :(得分:0)

浏览器不会假装您访问这样的文件,但您可以制作javascript文件而不是像这样的文本文件:

text1.js:

document.write('This is the text I want to show in here.');   //this is the content of thejavascript file

不要随便在任何地方打电话:

<script type="text/javascript" src="text1.js"></script>

答案 1 :(得分:0)

浏览器中存在太多安全问题(限制),导致许多本地Web应用程序无法实现,因此我对类似问题的解决方案是移出浏览器并进入结合了Chromium + Node.js +的node-webkit脚本,到具有完整磁盘I / O的可执行文件。

http://nwjs.io/

答案 2 :(得分:0)

[编辑]对不起,我以为你想用TideSDK做这件事,如果你想再试一次TideSDK,我会给出答案[/ edit]

我不确定它是否适合您,但我会尝试解释我的情况。 我有一个允许用户保存进度状态的应用程序。为此,我允许他选择一个文件夹,输入文件名并写入该文件。当用户打开应用程序时,他可以打开保存的文件,并取回他的进度。所以我认为这种增强与您正在寻找的类似。

就我而言,我使用原生文件选择允许用户选择特定的保存(我使用CoffeeScript):

Ti.UI.currentWindow.openFileChooserDialog(_fileSelected, {
  title: 'Select a file'
  path: Ti.Filesystem.getDocumentsDirectory().nativePath()
  multiple: false
})

(相关文档http://tidesdk.multipart.net/docs/user-dev/generated/#!/api/Ti.UI.UserWindow-method-openFileChooserDialog

完成此步骤后,我将打开所选文件:

if !filePath?
  fileToLoad = Ti.Filesystem.getFile(scope.fileSelected.nativePath())
else
  fileToLoad = Ti.Filesystem.getFile(filePath)
data = Ti.JSON.parse(fileToLoad.read())

(相关文档http://tidesdk.multipart.net/docs/user-dev/generated/#!/api/Ti.Filesystem

请注意,这些代码段是从我的项目中复制/粘贴的,如果没有我的其余代码,它们将无法运行,但我认为它足以说明我如何设置打开文件并阅读其内容

在这种情况下,我使用Ti.JSON.parse,因为这些文件中只有javascript对象,但在您的情况下,您可以获取内容。 openFileChooserDialog不是强制性的,如果您已经知道文件名,或者如果从其他方式获得它,则可以以自己的方式使用Ti.Filesystem。