2012-08-09 90 views
0

我是刚接触Javascript和Firefox的插件编程。如何使用firefox addon sdk从用户系统上传文件?

我正在制作一个插件,附加SDK包含一些关于用户浏览活动的信息。我使用file API以及一些硬编码的文件名。

现在我想分析服务器端的这些日志文件,但我不希望用户通过手动定位文件和上传它们的过程。我想为用户提供一个按钮; onclicking这些文件将被自动上传到服务器。

这个自动上传功能对于整个项目来说非常重要,因为它是一个面向学习的项目,如果用户需要手动上传数据,将很难从用户那里获取数据。

+0

链接不再工作,并且API文档(API版本1.14)上没有提及“文件”模块。是否有相应的低级API? – Bora 2013-06-27 14:07:27

回答

4

实际的文件上传(通过multipart/form-data)实现起来相当复杂,但是由于您在控制服务器端 - 为什么不接受常规POST请求,其中文件数据位于某个表单域中?所以,你的代码将数据发送到服务器看起来是这样的:

var file = require("sdk/io/file"); 
var {Request} = require("sdk/request"); 

var params = {}; 
params.log = file.read("c:\\foo\\bar.log", "b"); 
params.additional = "some additional form field"; 

Request({ 
    url: "https://example.com/uploadlog", 
    content: params, 
    onComplete: function(response) 
    { 
    console.log("Request sent"); 
    } 
}).post(); 

而且你可以在任何地方放了一个按钮,将触发该代码。

+0

我可以使用邮寄发送的数据的大小是否有限制? – Shatu 2012-08-09 10:54:00

+0

@Shatu:只有您在服务器上定义的内容。 – 2012-08-09 12:38:57

+0

文件模块似乎不再存在。你知道任何更换吗? – Bora 2013-06-27 14:08:30

相关问题