如何上传一个XML对象并用Perl将其保存在服务器上

How to upload an XML object and save it with Perl on the server?

本文关键字:Perl 保存 服务器 存在 对象 XML 一个      更新时间:2023-09-26

我现在已经尝试了各种版本,但我似乎错过了一些东西。有趣的是,到目前为止,我还没有找到这样的例子。我的Javascript似乎只上传了[object XMLDocument]。(我试图将XML文档保存在接收的perl脚本中,这是perl脚本写入outputfile的字符串。)

关于JavaScript部分,我查看了Mozilla的使用FormData对象

然后想出了:

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,我想作为某种文件上传会更好。

contentToWrite似乎包含一个XMLDocument对象。Blob构造函数接受ArrayBufferArrayBufferViewBlobDOMString对象中的Array。因此,您必须首先序列化XML文档:

var serializer = new XMLSerializer();
var xmlString  = serializer.serializeToString(contentToWrite);
var blob       = new Blob([ xmlString ], { type: "text/xml"});