Javascript 使用新的SDK Firefox插件通过Post发送文件
我正在搜索使用新的FirefoxSDK插件中的“Request”类向服务器发送zip文件。这是我的代码: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
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行“数据:否]
我已尝试进行一些检查,并:
非常感谢使用请求模块执行此操作的唯一方法是将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字符串或二进制字符串
这显示了如何获取二进制字符串: