我在网页上有一个文件结构,并寻找以下场景的解决方案:
所选文件应下载到浏览器缓存中并打开(如果是excel文档,则使用excel打开等)。 现在,当用户更改文件时,应检测到该文件并再次上载文件。
这是否可以使用JavaScript? 如果是,我在哪里存储文件(临时网络文件夹?)以及如何检测更改?
答案 0 :(得分:0)
你描述它的方式:不,这在JavaScript中是不可能的 听起来你想要一个FTP客户端。
当用户更改文件时,应检测该文件并再次上传文件。
由于JS几乎无法访问文件系统,因此无法实现
您可以访问文件的唯一方法是请求用户选择一个文件,请参阅:
How to open a local disk file with Javascript?
所以你能做的最多就是:
下载文件后,您无法控制它
对于已注册协议的应用程序(例如,steam://
),您可能请求在程序中打开的URL,但这需要{{1}每个文件类型/程序。
检测文件更改根本不可能(因为您无法访问该文件),并且再次上载需要用户使用文件对话框手动选择文件。
答案 1 :(得分:0)
使用它的唯一方法是让用户选择下载的文件,然后检查修改。
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's FileSystem api
答案 2 :(得分:0)
感谢您的帮助和想法。我看到了一个软件(https://www.group-office.com/),它包含了这个功能,所以必须要这样做。
新主意,使用chrome文件系统api(@Siguza已经说过):
我看到excel锁定文件Check if file has changed using HTML5 File API时遇到一些问题 但除此之外,这应该有效,不应该吗?