我正在开发一个项目,该项目必须是自包含的,并且能够在没有互联网连接的情况下运行。它是用于视频演示,我需要导入一个.txt文件,其中包括章节和循环信息,如章节标题,循环点和章节结束点(都在帧中)。但是,没有客户端包含脚本来包含文本文件。
对于我来说,存储或访问本地文本文件的最佳方式是什么,以便我可以迭代它并构建我的章节对象? HTML5本地存储?通过包含加载文本文件的隐藏iframe进行黑客攻击然后通过JavaScript获取该主体内容?对此问题的任何帮助将不胜感激。
谢谢!
答案 0 :(得分:3)
对于您的问题"需要通过JavaScript访问本地文本文件"与此问题非常相似:Local file access with javascript
如果你在浏览器中使用javascript,答案是不是一个访问本地文件的好方法。如果它只是一个没有http / web服务器的同一台机器上的文本文件,你可能会遇到一些问题,就像在javascript中一样,大多数浏览器默认禁用读取本地文件的能力。在chrome中,您可以通过在命令行启动浏览器时添加以下标志来禁用此安全功能。
- disable-web-security
如果您的数据是json,xml,csv的结构,那么如果文件托管在可通过HTTP访问的服务器上,则可以使用AJAX call将其引入。不使用http ajax调用,如上面的问题链接中提到的另一种可能的解决方案:
只是更新HTML5功能http://www.html5rocks.com/en/tutorials/file/dndfiles/ 这篇优秀的文章将详细解释本地文件访问的详细信息 的JavaScript。上述文章摘要:
规范为accessing files from a 'local' filesystem:
提供了几个接口文件 - 单个文件;提供只读信息,如姓名, 文件大小,mimetype和对文件句柄的引用。 FileList - 一个 类似于数组的File对象序列。 (在桌面上思考或拖动文件目录)。 Blob - 允许将文件切片为字节范围。 - @Horst Walter
如下图所示,您可以进行"文件上传"输入选择,只需将文件路径作为输入的默认选项"
<input type="file" id="files" name="files[]" multiple />
<output id="list"></output>
<script>
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object
// files is a FileList of File objects. List some properties.
var output = [];
for (var i = 0, f; f = files[i]; i++) {
output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ',
f.size, ' bytes, last modified: ',
f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a',
'</li>');
}
document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>';
}
document.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>
答案 1 :(得分:2)
您可以使用AJAX读取文本文件。
使用javascript你无法编辑,你只能阅读它。
一个例子是:
1-创建一个文本文件“page.txt”
2-使用此代码创建一个html页面
<!DOCTYPE html>
<html>
<body>
<script>
text = new XMLHttpRequest();
text.open("GET","page.txt",false);
text.onload = function(){
document.write(text.responseText);
}
text.send();
</script>
</body>
</html>