【发布时间】:2018-06-20 18:33:11
【问题描述】:
我编写了一个语音识别应用程序。我想要的只是录制一些语音并将其发送到服务器,在那里我将其转换为文本。我在发送该声音文件时遇到问题。我使用 p5.js 库录制语音,当我尝试下载它时没有问题。
问题是当我尝试使用 ajax 将其发送到服务器时。
script.js
function toggleRecording(e) {
if (e.classList.contains("recording")) {
recorder.stop();
e.classList.remove("recording");
sendAudioToServer(soundFile)
} else {
e.classList.add("recording");
recorder.record(soundFile);
}
}
function sendAudioToServer(soundFile)
{
var data = new FormData();
data.append('fname', 'test.wav');
data.append('data', soundFile);
console.log(soundFile);
console.log(data);
$.ajax({
type: 'POST',
url: '/recognizeCommand',
data: data,
dataType: 'jsonp',
processData: false,
contentType: false,
success: function(data) {
alert("works!");
},
error: function() {
alert("not works!");
}
})
Java 控制器
@PostMapping("/recognizeCommand")
public @ResponseBody String recognizeCommand(@RequestParam MultipartFile mpf) {
try {
byte[] bytes = mpf.getBytes();
SpeechRecognitionApplication.logger.info(bytes);
} catch (IOException e) {
e.printStackTrace();
}
return "finish";
}
当我停止录制时,无论toggleRecording 功能如何,它都应该停止录制并将其发送到服务器。 sendAudioToServer 函数有问题。以下是 Chrome 控制台的结果:
我不确定,但 FormData 可能有问题。正如你所看到的,当我在控制台中打印它时它是空的。在这里建立了一些类似的问题,但没有解决我的问题的解决方案。
编辑:
后添加dataType: 'jsonp'
有那个错误:
编辑 2: 添加csrf令牌后:
【问题讨论】:
标签: javascript java ajax spring-mvc p5.js