javascript - 使用 FileSystem Api 以 Javascript 写入文件

标签 javascript html google-chrome google-chrome-extension

我正在尝试使用 Chrome 中的 FileSystem API 写入本地文件系统。执行时出现以下错误

FileError is deprecated. Please use the 'name' or 'message' attributes of DOMError rather than 'code'.

window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;

var fs = null;

function errorHandler(e) {
  alert("hi");
  var msg = '';
  switch (e.code) {    //Error is being reported here
    case FileError.QUOTA_EXCEEDED_ERR:
      msg = 'QUOTA_EXCEEDED_ERR';
      break;
    case FileError.NOT_FOUND_ERR:
      msg = 'NOT_FOUND_ERR';
      break;
    case FileError.SECURITY_ERR:
      msg = 'SECURITY_ERR';
      break;
    case FileError.INVALID_MODIFICATION_ERR:
      msg = 'INVALID_MODIFICATION_ERR';
      break;
    case FileError.INVALID_STATE_ERR:
      msg = 'INVALID_STATE_ERR';
      break;
    default:
      msg = 'Unknown Error';
      break;
  }
}

function onInitFs(fs) {
  alert("hi");

  fs.root.getFile('log.txt', {create: true}, function(fileEntry) {

    // Create a FileWriter object for our FileEntry (log.txt).
    fileEntry.createWriter(function(fileWriter) {

      fileWriter.onwriteend = function(e) {
        console.log('Write completed.');
      };

      fileWriter.onerror = function(e) {
        console.log('Write failed: ' + e.toString());
      };

      // Create a new Blob and write it to log.txt.
      var blob = new Blob(['Add some text'], {type: 'text/plain'});

      fileWriter.write(blob);
    }, errorHandler);
  }, errorHandler);
}

function initFS(){
  window.requestFileSystem(window.TEMPORARY, 1024*1024, onInitFs, errorHandler);
}

if (window.requestFileSystem) {
  initFS();
}

因为我知道执行转到 errorHandler 方法,所以我假设我在调用 requestFileSystem() 方法时做错了什么。我真的很感激这里的帮助。提前致谢

进一步的研究表明它因安全错误而失败。我如何基本上绕过它

最佳答案

如果您在本地访问脚本(通过 file:///),您需要使用“--allow-file-access-from-files”标志启动 Chrome,如下所示:

C:\Path\To\Chrome.exe --allow-file-access-from-files

source , source

如果您在 Chrome 应用中执行此操作,则需要将文件系统权限添加到您的 manifest.json 中:

{
    "manifest_version": 2,
    "name": "...",
    "version": "...",  
    "minimum_chrome_version": "23",
    "permissions": [
        {
            "fileSystem": ["write"]
        }
    ]
}

source

要删除您收到的警告,只需使用 e.name 和/或 e.message 而不是 e.code:

function errorHandler(e) {
    alert(e.name + ": " + e.message);
}

关于javascript - 使用 FileSystem Api 以 Javascript 写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24930403/

相关文章:

html - 如何从右到左为元素宽度设置动画::之后?

javascript - 非常奇怪的 jQuery 错误

javascript - 从 Android 上的应用内浏览器重定向到 Chrome 的最佳方式?

html - 在 html 中显示十字符号

JavaScript 无法找到 DOM 的任何部分

javascript - WinSCP 刷新 PHP 代码库?如何使用 XMLHttpRequest 发送文件后刷新服务器

javascript - Elasticsearch 显示重复命中

javascript - tds 中的内联编辑

javascript - IE9 : Script only works in debugger, 但在不调试时不是

javascript - 拦截 Chrome 浏览器中的 PageUp/PageDown 按键事件