所以,我一直在寻找一个解决方案,但是有各种各样的答案,我仍然不知道如何解决这个问题。
我正在为chrome(仅)开发一个基于JavaScript的桌面应用程序,其中用户离线可以上传文件,这些文件将在以后连接到Web时发送到服务器(这由csFTPQuick.FTP组件完成)。
事情是,同时这个文件应该保存在某个地方,我不在乎新名称。现在,我不确定JavaScript是否可以处理它,遗憾的是我找到的JS解决方案基于ActiveX,我需要它用于Chrome。有没有Chrome平行于MS File.Move?
我知道HTML5可以通过FileSystem API来处理它,然后该文件被沙盒化,但事实是我不知道它意味着什么和/或如何做。
最重要的是,我需要的是用户能够使用普通的HTML文件按钮选择文件,一旦提交,该文件将被复制到另一个不同名称的位置。一旦到达那里,FTP组件将在用户上线时将其上传到服务器。
有人能引用我的代码示例吗?我很失落,我真的需要这个功能。
非常感谢!
答案 0 :(得分:0)
我知道HTML5可以通过FileSystem API来处理它,然后该文件被沙盒化,但事实是我不知道它意味着什么和/或如何做。
这意味着它可以访问的文件系统被锁定远离系统的其他部分。代码无法写入计算机的主目录结构。浏览器外部的代码无法访问沙箱文件系统。
简而言之:这意味着它对您的问题没有帮助。
是否有任何Chrome与MS File.Move平行?
没有
浏览器旨在使用网络数据和不受信任的代码处理网页。他们严格限制用户可以触摸用户的电脑。
您无法在典型的浏览器环境中实现所需。
考虑使用类似node-webkit or electron的内容来构建您的应用。您可以为NodeJS应用程序编写基于HTML的前端。它确实导致需要安装的完整应用程序,用户只需访问HTML文档即可轻松启动和运行,但它没有相同的安全限制。
答案 1 :(得分:-1)
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);
};