我正在网站上录制2-4秒的音频,并使用Ajax将其发布到服务器上。此Ajax有时需要4到5秒钟,而另一方面,上传同一文件则需要2分钟。文件大小约为360kB。我希望Ajax将文件拖放到服务器上并立即返回,让服务器继续处理它,同时用户可以开始记录下一个文件。
我正在使用webRTC录制音频并在Yii 1.x上工作
//create FormData
var formData = new FormData();
formData.append(fileType + '-filename', fileName);
formData.append(fileType + '-blob', blob);
callback('Uploading ' + formData + ' recording to server.');
//ajax call
makeXMLHttpRequest('captureFile', formData, function(progress) {
if (progress !== 'upload-ended') {
callback(progress);
return ;
}
var initialURL = '<path to upload a file>';
callback('ended', initialURL + fileName);
});
function makeXMLHttpRequest(url, data, callback) {
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
callback('upload-ended');
}
};
request.open('POST', url);
request.send(data);
};
成功后,下一个ajax将执行其操作以启动下一个文件的记录。
如何确保此Ajax仅将文件拖放到服务器上并返回并由服务器处理文件,而不停止ajax来完成文件处理。