在Chrome应用中,我使用JavaScript XHR从服务器下载blob内容(特别是Angular $ http GET,响应类型为'blob')
我该如何将其保存到chrome应用程序的文件系统?
目前在HTML5文件系统API上使用Angular包装器 https://github.com/maciel310/angular-filesystem
我不想向用户显示弹出窗口(因此我无法使用chrome.fileSystem. chooseEntry
)
该chrome.fileSystem.requestFileSystem
API仅受Kiosk专用应用程序支持.因此我使用的是HTML5 FileSystem API而不是chrome.
我正在使用以下代码来使XHR获取blob.
$http({ url: SERVER_URL+"/someVideo.mp4", method: "GET", responseType: "blob" }).then(function(response) { console.log(response); fileSystem.writeBlob(response.name, response).then(function() { console.log("file saved"); }, function(err) { console.log(err); }); }, function (response) { });
这是我的writeBlob方法
writeBlob: function(fileName, blob, append) { append = (typeof append == 'undefined' ? false : append); var def = $q.defer(); fsDefer.promise.then(function(fs) { fs.root.getFile(fileName, {create: true}, function(fileEntry) { fileEntry.createWriter(function(fileWriter) { if(append) { fileWriter.seek(fileWriter.length); } var truncated = false; fileWriter.onwriteend = function(e) { //truncate all data after current position if (!truncated) { truncated = true; this.truncate(this.position); return; } safeResolve(def, ""); }; fileWriter.onerror = function(e) { safeReject(def, {text: 'Write failed', obj: e}); }; fileWriter.write(blob); }, function(e) { safeReject(def, {text: "Error creating file", obj: e}); }); }, function(e) { safeReject(def, {text: "Error getting file", obj: e}); }); }, function(err) { def.reject(err); }); return def.promise; },
这显示SECURITY_ERR
为It was determined that certain files are unsafe for access within a Web application, or that too many calls are being made on file resources.
这是什么解决方案?
我--allow-file-access-from-files
在启动应用程序时尝试使用flag.它没有帮助.