【问题标题】:How to upload an XML object and save it with Perl on the server?如何上传 XML 对象并在服务器上使用 Perl 保存?
【发布时间】:2015-05-25 17:48:05
【问题描述】:

我现在尝试了各种版本,但我似乎只是错过了一些东西。 有趣的是,到目前为止我还没有找到一个例子。 我的Javascript似乎只上传了[object XMLDocument]。 (我尝试将 XML-Document 保存在接收 perl 脚本中,这是 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,我想上传为文件类型会更好。

【问题讨论】:

    标签: javascript xml perl upload xmlhttprequest


    【解决方案1】:

    contentToWrite 似乎包含一个 XMLDocument 对象。 Blob constructor 接受 ArrayArrayBufferArrayBufferViewBlobDOMString 对象。所以你必须先serialize the XML document

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

    【讨论】:

      猜你喜欢
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 2014-08-10
      • 2011-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多