在本地压缩文件(JavaScript/HTML5等)

在本地压缩文件(JavaScript/HTML5等),javascript,html,filesystems,Javascript,Html,Filesystems,所以,我一直在寻找一个解决方案,但有各种各样的答案,我仍然不知道如何解决这个问题 我正在为chrome开发一个基于JavaScript的桌面应用程序(仅限),离线用户可以上传文件,这些文件将在连接到web后发送到服务器(这由csFTPQuick.FTP组件完成) 问题是,在此期间,这个文件应该保存在某个地方,我不在乎在哪里,以一个新的名称。现在,我不确定JavaScript是否能处理它,不幸的是,我找到的JS解决方案是基于ActiveX的,我需要它用于Chrome。是否有与MS文件平行的Chro

所以,我一直在寻找一个解决方案,但有各种各样的答案,我仍然不知道如何解决这个问题

我正在为chrome开发一个基于JavaScript的桌面应用程序(仅限),离线用户可以上传文件,这些文件将在连接到web后发送到服务器(这由csFTPQuick.FTP组件完成)

问题是,在此期间,这个文件应该保存在某个地方,我不在乎在哪里,以一个新的名称。现在,我不确定JavaScript是否能处理它,不幸的是,我找到的JS解决方案是基于ActiveX的,我需要它用于Chrome。是否有与MS文件平行的Chrome。移动

我知道HTML5可以通过文件系统API来处理它,然后文件会被沙盒处理,但说实话,我不确定这意味着什么和/或如何做

总之,我需要的是用户能够使用普通的HTML文件按钮选择一个文件,一旦提交,这个文件将以不同的名称复制到另一个位置。一旦用户登录,FTP组件将负责在用户联机时将其上载到服务器

有人能给我举一个代码示例吗?我在这里迷路了,我真的需要这个功能

非常感谢

document.querySelector('#myfile').onchange = function(e) {
  var files = this.files;

  window.requestFileSystem(window.TEMPORARY, 1024*1024, function(fs) {
    // Duplicate each file the user selected to the app's fs.
    for (var i = 0, file; file = files[i]; ++i) {

      // Capture current iteration's file in local scope for the getFile() callback.
      (function(f) {
        fs.root.getFile(f.name, {create: true, exclusive: true}, function(fileEntry) {
          fileEntry.createWriter(function(fileWriter) {
            fileWriter.write(f); // Note: write() can take a File or Blob object.
          }, errorHandler);
        }, errorHandler);
      })(file);

    }
  }, errorHandler);

};
发件人:

我知道HTML5可以通过文件系统API来处理它,然后文件会被沙盒处理,但说实话,我不确定这意味着什么和/或如何做

这意味着它可以访问的文件系统被锁定,与系统的其余部分隔离。代码无法写入计算机的主目录结构。来自浏览器外部的代码无法访问沙箱文件系统

简而言之:这意味着它对你的问题没有帮助

是否有与MS文件平行的Chrome。移动

没有

浏览器设计用于使用网络数据和不可信代码处理网页。他们被严格限制在用户的电脑上接触什么

在典型的浏览器环境中,您无法实现所需的功能


考虑使用类似的方法来构建你的应用程序。您可以为NodeJS应用程序编写基于HTML的前端。它确实需要安装一个完整的应用程序,用户启动和运行它不像访问HTML文档那么简单,但它也没有相同的安全限制。

csFTPQuick.FTP是ASP的一个组件;这是服务器端代码。脱机时没有任何地方可以复制文件,稍后可以使用csFTPQuick.FTP获取这些文件。嗯……除非你在WSH中使用它(我现在看到在页面下面很长一段时间都提到过)。用户上网的那一刻,本地机器上保存的所有信息(包括indexxedDB中的数据)都会使用ASP与服务器同步,这就是csFTPQuick应该发挥作用的地方。ASP(服务器端技术)是如何实现的应该从客户端计算机启动数据传输吗?我所做的是:一旦JavaScript识别出internet连接(eventListener('online',func),然后通过navigator.online),一个Ajax函数启动并与服务器建立连接,发送所有状态为unsent的记录(onSuccess变为sent),使用带有SQL命令等的常规ASP脚本。FTP组件如何从中读取文件?(它不能,这意味着此代码无法解决问题)。感谢您的详细解释。不幸的是,该应用程序已经处于高级阶段,它在用户端基于JavaScript(包括localStorage、indexedDB等),在服务器端基于ASP。同步一直工作得很好,文件需求是最近的一个需求。该应用程序位于chrome容器中,但它是纯JS,而不是electron。所以,我知道没有任何解决办法?因为服务器端脚本无法访问受限于当前浏览器的sanboxed文件(就像本地内存功能一样)?服务器端脚本根本无法访问客户端上的文件,无论是沙盒文件还是其他文件。要让服务器获取文件,客户端必须显式地将它们发送到服务器。如果同步工作正常,那么您可能有能力从客户端启动一些事情,但问题并不是您在问题中如何构建它。您应该能够使用沙盒文件系统将数据存储在中,然后使用客户端JS读取数据,并在同步时通过HTTP将其发送到服务器(然后ASP可以将其FTP到任何位置,但这与存储数据并稍后将其发送到ASP服务器的问题无关)…但这让您处于应该阅读介绍性文件系统API教程的位置,而不是这样。是的,我想您是对的。由于时间很短,我想可能有人已经发布了这样的代码,或者可能有一些js库或类似的东西。。。。但是,在更糟糕的情况下。。。