Js - 缓存文件,打开它,检测更改并上传



我在网页上有一个文件结构,并寻找以下情况的解决方案:

所选文件应下载到浏览器缓存中并打开(如果是 excel 文档,请使用 excel 打开等)。现在,当用户更改文件时,应该检测到该文件,并再次上传该文件。

这在 JavaScript 中可能吗?如果是,我在哪里存储文件(临时互联网文件夹?)以及如何检测更改?

做到这一点,您需要让用户选择下载的文件,然后检查修改。

.HTML

<label for="excelFile">Select the excel file: </label><input type="file" id="excelFile" />

.JS

//Change event to detect when the user has selected a file
document.querySelector("#excelFile").addEventListener("change",function(e){
   //get the selected file
   var file = this.files[0];
   //get the last modified date
   var lastModified = file.lastModified;
   //check lastModified against stored lastModified
   //this assumes you store the last mod in localStorage
   if(localStorage['excelLastMod'] < lastModified){
       //It has modified update last mod
       localStorage['excelLastMod'] = lastModified;
       //do upload
   }
});

如果您知道您的用户正在使用 Chrome,则可以使用 Chrome 的文件系统 API

你描述它的方式:不,这在 JavaScript 中是不可能的。
听起来你想要一个FTP客户端。

当用户更改文件时,应检测到该文件,并应再次上载该文件。

这是不可能的,因为JS几乎无法访问文件系统。
访问文件的唯一方法是请求用户选择一个文件,请参阅:
如何使用Javascript打开本地磁盘文件?

所以你能做的最多就是:

  1. 文件已下载。
  2. 根据浏览器和设置,文件可能会自动打开,也可以不打开。
  3. 用户会看到一个文件选择对话框,他们可以在完成编辑时使用。
  4. 将所选文件与服务器上的文件进行比较,如果更改,则上传。

下载文件后,您无法控制它。
对于已注册协议的应用程序(例如,steam://),您可能能够请求在程序中打开 URL,但这需要每种文件类型/程序if
根本不可能检测文件更改(因为您无权访问文件),再次上传需要用户使用文件对话框手动选择文件。

感谢您的帮助和想法。我看到了一个包含此功能的软件(https://www.group-office.com/),所以必须有办法做到这一点。

新想法,使用chrome文件系统api(@Siguza已经说过):

  • 使用文件系统 api 从用户本地文件系统上的服务器数据库创建文件
  • 在本地打开文件(应该使用 filesystem:http://www.example.com/persistent/info.txt,或者?)
  • 每 x 秒轮询一次文件的最后更改
  • 如果检测到更改,请将文件上传回服务器数据库

我看到 excel 锁定文件时遇到了一些问题 使用 HTML5 文件 API 检查文件是否已更改但除此之外,这应该有效,不是吗?

相关内容

  • 没有找到相关文章

最新更新