从浏览器播种文件

Seeding files from browser

我正在尝试允许用户从他们的计算机 select 一个文件并开始为它播种,我已经按照示例 here 进行了操作。我使用了普通输入而不是拖放,因为我无法让它工作。

现在,每当 selected 文件时,我都会收到此错误:

Uncaught Error: filesystem paths do not work in the browser

如何在不将文件上传到我的服务器的情况下从用户的计算机开始播种?

我认为您尝试过使用 file:/// 读取文件,但出于安全原因,这是不可能的。必须从用户选择或拖放文件。 最简单的解决方案是使用按钮:

function readFile(evt) {
  var file = evt.target.files[0]
  if (!file) {
    return
  }
  var reader = new FileReader()
  reader.onload = evt => {
    var contents = evt.target.result
    console.log(contents)
  }
  reader.readAsText(file)
}
<input type="file" onchange="readFile.call(this, event)" />

使用此代码段,您可以在不与服务器进行任何交互的情况下读取文件,这非常适合 Torrent 等无服务器技术。