使用节点和restler多部分形式后数据(Using node and restler for mu

2019-08-17 19:29发布

我可以上传没有问题的数据部分采用restler.file文件。 我现在想写一个很短的CSV数据串,这我无法找到数据函数文档,但阅读我原本以为是正确的代码:

restler.post("http://posttestserver.com/post.php", {
    multipart: true,
    data: {
            "upload": restler.data("people.csv", "text/csv", '384;213;Status Update'),
            "returnURL": ""
    }
}).on("complete", function(data) {
     console.log(data);
});

不幸的是这只是挂起,并会超时。 我尝试添加EOF和其他东西的第三个参数,但我知道我失去了一些东西。 数据字符串我上面是完全相同的内容,当我使用restler.file的作品文件。 我宁可不要写出一个CSV文件,如果我没有张贴之前。

Answer 1:

编辑----

按@乔尼对上述问题的评论,这个问题似乎修复经提交后已纠正pull请求 。

原来的答案(由OP)----

从restler(并与保持相应的)研究它看起来并不像restler可以做我想要的。 注:某人犯了一些代码,将允许以流的形式文件的一部分,但它并没有被接受进入分支,我没有与流足够的经验。

我解决了回到基本问题。 我读多(RFC在http://www.ietf.org/rfc/rfc2388.txt ),发现只有一些规则需要注意的构建体,大多是一些额外的\ r \ n“和' - - ”在正确的地方。

我决定简单地格式化原POST体,并通过基本节点HTTP客户端发送。

这工作:

var http = require('http');

postBody = new Buffer(
    '------WebKitFormBoundaryebFz3Q3NHxk7g4qY' + "\r\n" +
    'Content-Disposition: form-data; name="upload"; filename="filename.csv"' + "\r\n" +
    'Content-Type: text/csv' + "\r\n" +
    '\r\n' +
    'comma,separated,values' + "\r\n" +
    '------WebKitFormBoundaryebFz3Q3NHxk7g4qY' + "\r\n" +
    'Content-Disposition: form-data; name="returnUrl"' + "\r\n" + 
    '\r\n' +
    'http://return.url/' + "\r\n" +
    '------WebKitFormBoundaryebFz3Q3NHxk7g4qY--'
    );

var headers = {
  "Content-Type": "multipart/form-data; boundary=----WebKitFormBoundaryebFz3Q3NHxk7g4qY",
  "Content-Length": postBody.length
};

//These are the post options
var options = {
  hostname: 'myhost.com',
  port: 80,
  path: '/myPost',
  method: 'POST',
  headers: headers
};

// so we can see that things look right
console.log("postBody:\n" + postBody);
console.log("postBody.length:\n" + postBody.length);

var responseBody = '';

// set up the request and the callbacks to handle the response data
var request = http.request(options, function(response) {
    // when we receive data, store it in a string
    response.on('data', function (chunk) {
        responseBody += chunk;
    });
    // at end the response, run a function to do something with the response data
    response.on('end',function() {
        console.log(responseBody);
    });
});

// basic error function
request.on('error', function(e) {
  console.log('problem with request: ' + e.message);
});

// write our post body to the request
request.write(postBody);
// end the request
request.end();

我希望这可以帮助人们在做多/表单数据。



文章来源: Using node and restler for multipart form-data POST