【问题标题】:Add xml buffer to form data添加 xml 缓冲区以形成数据
【发布时间】:2021-05-31 03:12:10
【问题描述】:

我想用 superagent 上传一个 XML 文件(Protractor Testresults,所以它在 NodeJS 上下文中)。我使用“fs”来读取带有 readFileSync 的 XML 文件,它返回 XML 文件的缓冲区对象。不幸的是,我不知道如何将此缓冲区附加到请求的 formData 中。如果我这样做,我只会得到一个错误:“字符串”参数必须是字符串、缓冲区或 ArrayBuffer 类型之一。接收到的类型对象

    //Imports and var declaration
    var FormData = require('form-data');
    var fs = require('fs');
    
    const xmlFile = "\\junit_xml_generation\\file.xml";
    var formData = new FormData();    
    
    //Read File
    fs.readFileSync(__dirname + xmlFile, function(err, data) {
      
      //Add To Form Data
      formData.append('file', Buffer.from(data, 'utf-8'), {filename: 'file.xml'});

      //Request
      superagent
        .post("http://myurl.com")
        .set("Content-Type", "multipart/form-data")
        .type('xml')
        .send(formData)
        .end(function(err, res){
          console.log("Result: ", res, err);
        });
    });

我已经尝试了很多,但我不知道如何将其转换为 Buffer/ArrayBuffer,因此请求不会给我不兼容类型的错误...

【问题讨论】:

    标签: javascript html node.js web multipartform-data


    【解决方案1】:

    formData append 函数的第三个参数应该是一个包含文件名的字符串,而不是一个对象。

      formData.append('file', Buffer.from(data, 'utf-8'), 'file.xml');
    

    【讨论】:

      猜你喜欢
      • 2023-01-07
      • 1970-01-01
      • 2012-04-04
      • 2020-11-22
      • 1970-01-01
      • 2014-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多