是否可以在没有HTTP请求或<输入>

Is it possible to retrieve text files from HTML app directory without HTTP request or <input>?

本文关键字:gt lt 请求 输入 HTTP 是否      更新时间:2023-09-26

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

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

我用过TideSDK,但它不那么轻。我知道HTTP请求,但如果我没记错的话,只有Firefox对我使用它访问本地文件表示友好(尽管使用src访问本地图像似乎不是问题)。我也知道FileReader对象;但是,我的界面要求我根据文件名加载文件,而不是像<input type="file">那样根据文件浏览器选择。

是否有某种方法可以实现这种类型的文件访问,或者我是否坚持使用上面提到的方法?

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

text1.js:

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

现在,在任何你喜欢的地方都可以叫它:

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

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

http://nwjs.io/

[edit]很抱歉,我以为你想用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方法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对象,但在您的情况下,您只能获取内容。如果您已经知道文件名,或者您可以通过其他方式使用Ti.Filesystem,那么openFileChooserDialog不是强制性的。