Javascript 使用新的SDK Firefox插件通过Post发送文件

Javascript 使用新的SDK Firefox插件通过Post发送文件,javascript,firefox,firefox-addon,firefox-addon-sdk,Javascript,Firefox,Firefox Addon,Firefox Addon Sdk,我正在搜索使用新的FirefoxSDK插件中的“Request”类向服务器发送zip文件。这是我的代码: var Request = require("sdk/request").Request; var file = new FileUtils.File(pathToZipFile); Request({ url: serverURL, content: file, onComplete: function (response) { for (var heade

我正在搜索使用新的FirefoxSDK插件中的“Request”类向服务器发送zip文件。这是我的代码:

var Request = require("sdk/request").Request;
var file = new FileUtils.File(pathToZipFile);
Request({
   url: serverURL,
   content: file,
   onComplete: function (response) {
       for (var headerName in response.headers) {
          console.log(headerName + " : " + response.headers[headerName]);
       }
       console.log("Response " + response.text );
    }
}).post();
但错误在于:

[异常…”组件返回故障代码:0x8052009(NS错误文件无效路径)[nsILocalFile.target]“nsresult:”0x8052009(NS错误文件无效路径)”位置:“JS帧::resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/querystring.js ::stringify/<::第70行“数据:否]

我已尝试进行一些检查,并:

  • 服务器处于打开状态,接收正常的GET和POST,但不包含文件
  • zip文件存在,路径正确
  • 你看到错误了吗?
    非常感谢

    使用请求模块执行此操作的唯一方法是将base64编码字符串基于
    内容
    键。如果不使用此选项,则可以发送数据,例如
    Blob
    DOMFile
    newfile()
    )实例

    但正如我们在SDK代码中看到的,请求模块在请求时发送
    数据
    变量(如果不是HEAD或GET请求)

    data
    var是通过对传递到
    content
    键的任何内容运行
    stringify
    生成的:

    Stringify使其成为字符串:

    因此,您必须发送base64编码字符串。或二进制字符串。真糟糕

    您可以使用
    sdk/io
    模块将文件作为
    ArrayBuffer
    读取,然后将该
    ArrayBuffer
    转换为base64字符串或二进制字符串


    这显示了如何获取二进制字符串:

    使用请求模块进行此操作的唯一方法是将base64编码的字符串基于
    内容
    键。如果不使用此选项,则可以发送数据,例如
    Blob
    DOMFile
    newfile()
    )实例

    但正如我们在SDK代码中看到的,请求模块在请求时发送
    数据
    变量(如果不是HEAD或GET请求)

    data
    var是通过对传递到
    content
    键的任何内容运行
    stringify
    生成的:

    Stringify使其成为字符串:

    因此,您必须发送base64编码字符串。或二进制字符串。真糟糕

    您可以使用
    sdk/io
    模块将文件作为
    ArrayBuffer
    读取,然后将该
    ArrayBuffer
    转换为base64字符串或二进制字符串

    这显示了如何获取二进制字符串: