gpt4 book ai didi

javascript - 通过 XHR 从客户端向 Node JS 服务器发送 blob 数据

转载 作者:搜寻专家 更新时间:2023-11-01 00:45:28 25 4
gpt4 key购买 nike

我想从 JA 客户端向 NodeJS 服务器发送一个 blob 数据。

现在我有了这个客户端代码: [...] recorder.exportWAV(函数(blob){ audioObj = blob; });

var formData = new FormData();
formData.append("operation", "addMessage");
formData.append("msg", audioObj);

var xhr = new XMLHttpRequest();
xhr.open("POST", "http://localhost:8080/sendRecord", true);
xhr.onreadystatechange = function(){
if(xhr.readyState==4 && xhr.status==200){
// get response from server
}
}
xhr.send(formData);

我使用一些 JS 库从集成麦克风录制音频,最后我有一个 audioObj,它是一个 blob 对象。

还有我要调整以接收数据的这个 si node.js 服务器。

var http = require('http'),
url = require('url');

var app = http.createServer(function(request, response){

var path = url.parse(request.url).pathname;
// check the url path
if (path == "/sendRecord") {

// check the request method
if(request.method != "POST"){
// return error
}

// _______________________________
//| here I want catching XHR data |
// –––––––––––––––––––––––––––––––
}
}).listen(8080);

console.log("Server running on: http://localhost:8080/");

我认为应该是一些服务器端的 XHR API 来响应客户端的 XHR 请求,但我不知道在哪个位置可以找到它们。谁能帮帮我?也有链接或文档...;)

谢谢!

最佳答案

我自己回答...如果将来有人觉得有用 ;)

使用 Formidable ( https://github.com/felixge/node-formidable ) 我已经这样做了:

var http = require('http'),
url = require('url'),
formidable = require('formidable')
util = require('util');

var server = http.createServer().listen(8080);

server.on('request', function(request, response) {
var form = new formidable.IncomingForm(),
fields = [],
files = [];

form.on('error', function(err){
response.writeHead(200, {'content-type': 'text/plain'});
response.end('error:\n\n' + util.inspect(err));
});

form.on('field', function(field, value){
console.log(field, value);
fields.push([field, value]);
});

form.on('file', function(field, file){
console.log(field, file);
files.push([field, file]);
});

form.on('end', function(){
console.log('-> upload done');
response.writeHead(200, {'content-type': 'text/plain'});
response.write('Received fields:\n\n ' + util.inspect(fields));
response.write('\n\n');
response.end('received files:\n\n ' + util.inspect(files));
});

form.encoding = 'utf-8';
form.uploadDir = './tmp';
form.keepExtensions = true;
form.parse(request);
});

感谢 robertklep 的建议!

关于javascript - 通过 XHR 从客户端向 Node JS 服务器发送 blob 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19908635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com