【问题标题】:Can you create a Javascript File List or File object without html file input您可以在没有 html 文件输入的情况下创建 Javascript 文件列表或文件对象吗
【发布时间】:2017-02-01 14:07:30
【问题描述】:

我正在创建一个离线 javascript 应用程序,它使用 sql.js 加载 sqlite 数据库,添加一些过滤器并查询数据并显示各种基于 d3 的图表。但是,我的用户不想被数据库的东西和拥有数据库文件所困扰。我想在页面加载时加载文件。

<input id="inpLoadDB" type="file" onchange="loadDB()">

当我查询该元素时,它会返回一个 FileList 对象,我可以从中获取所选文件。如何在不包含 HTML 元素的情况下构建 FileList(或只是文件对象)。比如:

var fl=new FileList();
fl.readDir("./data/");

【问题讨论】:

  • 使用ajax函数?
  • 这个应用在什么环境下运行?你可能想看看使用ServiceWorker API
  • 它在本地浏览器中运行。我的用户更喜欢 IE10,偶尔也喜欢 Firefox。他们的 IT 部门不支持其计算机上的 Chrome。没有可用的网络服务器(他们也无法安装)来托管此页面。

标签: javascript html fileapi


【解决方案1】:

从浏览器访问文件受到限制。如果您从浏览器执行它,则需要用户交互,例如上传文件按钮。即使是 HTML5 的文件访问 api 也需要用户做一些事情来获取文件https://www.html5rocks.com/it/features/file_access

在 StackOverflow 上查看这个其他答案并更新 2016 https://stackoverflow.com/a/372333/4635829

如果您编写 Node.js 应用程序并使用文件 I/O 模块,则可以使用 Javascript 访问文件系统编程

var fs = require("fs");

// Asynchronous read
fs.readFile('input.txt', function (err, data) {
   if (err) {
      return console.error(err);
   }
   console.log("Asynchronous read: " + data.toString());
});

// Synchronous read
var data = fs.readFileSync('input.txt');
console.log("Synchronous read: " + data.toString());

console.log("Program Ended");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-29
    • 2023-03-17
    • 2014-04-29
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    相关资源
    最近更新 更多