2015-03-22 2 views
0

Я пробовал разные версии сейчас, но я просто, кажется, что-то пропустил. Смешно Я пока не нашел примера для этого. Единственное, что кажется загруженным моим Javascript, - [object XMLDocument]. (Я пытаюсь сохранить XML-документ в принимающем perl-скрипте, и это строка, которую скрипт perl записывает в выходной файл.)Как загрузить объект XML и сохранить его с помощью Perl на сервере?

Для части JavaScript я просмотрел Mozilla's Using FormData Objects.

А потом придумал:

function httpPerlUploadBigData(fuPerlTarget, contentToWrite, fuCallMeOnLoad) { 

    var formData = new FormData(); 
    var blob = new Blob([contentToWrite], { type: "text/xml"}); 

    formData.append('file', blob, "filename.txt"); 
    formData.append('bigcontent', contentToWrite); 
    formData.append('saveOnServerAs', 'temp.xml'); 

    var MyThis = this; 
    this.perlTarget = fuPerlTarget; 
    this.callMeOnLoad = fuCallMeOnLoad; 

    var oReq = new XMLHttpRequest(); 
    oReq.open("POST", MyThis.perlTarget, true); 
    oReq.onload = function(e) { 
    MyThis.callMeOnLoad(e.target.response); 
    }; 

    oReq.send(formData); 
} 

Я посылаю contentToWrite два раза, потому что я хотел бы загрузить его таким образом, что сценарий видит, как загруженный файл. Другой код, который я пробовал, перед тем, как загрузить его как обычный текст, но поскольку это XML, я думаю, что загрузка в виде файла будет лучше.

ответ

2

contentToWrite, похоже, содержит объект XMLDocument. Blob constructor принимает Array от ArrayBuffer, ArrayBufferView, Blob, DOMString объектов. Таким образом, вы должны: serialize the XML document:

var serializer = new XMLSerializer(); 
var xmlString = serializer.serializeToString(contentToWrite); 
var blob  = new Blob([ xmlString ], { type: "text/xml"}); 
Смежные вопросы