Use o Blob no add-on do firefox

Tentando obter o seguinte código para funcionar no complemento do Firefox:

var oMyForm = new FormData();

oMyForm.append("username", "Groucho");
oMyForm.append("accountnum", 123456); // number 123456 is immediately converted to string "123456"

// HTML file input user's choice...
oMyForm.append("userfile", fileInputElement.files[0]);

// JavaScript file-like object...
var oFileBody = '<a id="a"><b id="b">hey!</b></a>'; // the body of the new file...
var oBlob = new Blob([oFileBody], { type: "text/xml"});

oMyForm.append("webmasterfile", oBlob);

var oReq = new XMLHttpRequest();
oReq.open("POST", "http://foo.com/submitform.php");
oReq.send(oMyForm);

dehttps://developer.mozilla.org/pt-BR/docs/Web/Guide/Using_FormData_Objects?redirectlocale=pt-BR&redirectslug=Web%2FAPI%2FFormData%2FUsing_FormData_Objects

Então eu sei que tenho que usar o XPCOM, mas não consigo encontrar o equivalente. Eu encontrei isso até agora:

var oMyForm = Cc["@mozilla.org/files/formdata;1"].createInstance(Ci.nsIDOMFormData);

oMyForm.append("username", "Groucho");
oMyForm.append("accountnum", 123456); // number 123456 is immediately converted to string "123456"

// JavaScript file-like object...
var oFileBody = '<a id="a"><b id="b">hey!</b></a>'; // the body of the new file...
var oBlob = Cc["@mozilla.org/files/file;1"].createInstance(Ci.nsIDOMFile, [oFileBody], { type: "text/xml"});

oMyForm.append("webmasterfile", oBlob);

var oReq = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Ci.nsIXMLHttpRequest);
oReq.open("POST", "http://localhost:3000");
oReq.send(oMyForm);

Essencialmente, o problema évar oBlob = Cc["@mozilla.org/files/file;1"].createInstance(Ci.nsIDOMFile, [oFileBody], { type: "text/xml"}); Porque"@mozilla.org/files/file;1" ouCi.nsIDOMFile está incorreto. Observe que o nsIDOMFile é herdado do nsIDOMBlob.

Alguém sabe o que fazer?

Muitíssimo obrigado.

questionAnswers(1)

yourAnswerToTheQuestion