通过nodejs下载响应POST请求发送的文件? (没有AJAX)
我有一个nodejs服务器不时提交一个post表单到我无法控制的外部第三方服务器,因此我无法执行AJAX请求。 我也不能使用得到。
当我在浏览器中运行代码时,发布的请求会自动下载到默认位置。
如何将文件下载到nodejs中的服务器文件系统?
当前请求: $form.submit()
我发布的表单:
var $form = $('<form/>', { method: 'post', id: 'myForm', name: 'myForm', action: 'example.example' }); var csvInput=$('<input/>', {name: 'myValue', value: 'Empty', type: 'hidden'}); $form.append(csvInput) $form.append($('<input/>', {name: 'test X', value: '1', type: 'hidden'})); $form.append($('<input/>', {name: 'test Y', value: '2', type: 'hidden'})); $form.append($('<input/>', {name: 'test Z', value: '3', type: 'hidden'}));
(接近30个input字段)
解
通过使用request
函数和fd的键值数组解决它。
request({ method: 'POST', uri: 'http://example.com/', headers: { host: 'example.com', 'content-type': 'application/x-www-form-urlencoded' }, body: $.param(fd)} ).pipe(fs.createWriteStream('myfile.csv'))
如果您正在使用请求模块,则可以将结果传送到文件中。
var formData = { myValue: 'Empty', testX: '1', testY: '2', 'test Z': '3' }; request.post('http://example.example', {form: formData}).pipe(fs.createWriteStream('./myfile.txt'))