Javascript 从blob url下载数据
我正在创建一个从麦克风录制音频的应用程序,并提供将其下载到本地驱动器的选项。下面是我的一段代码,它生成一个带有时间戳的音频链接Javascript 从blob url下载数据,javascript,apache,Javascript,Apache,我正在创建一个从麦克风录制音频的应用程序,并提供将其下载到本地驱动器的选项。下面是我的一段代码,它生成一个带有时间戳的音频链接 stopRecording(function(AudioBLOB){ var url = URL.createObjectURL(AudioBLOB); var li = document.createElement('li'); var au = document.cre
stopRecording(function(AudioBLOB){
var url = URL.createObjectURL(AudioBLOB);
var li = document.createElement('li');
var au = document.createElement('audio');
var hf = document.createElement('a');
au.controls = true;
au.src = url;
hf.href = url;
// Important:
// Change the format of the file according to the mimetype
hf.download = new Date().toISOString() + '.wav';
hf.innerHTML = hf.download;
li.appendChild(au);
li.appendChild(hf);
recordingslist.appendChild(li);
}, _AudioFormat);
}, false);
如何修改此代码,使其不创建链接而直接将文件上载到我的根文件夹。这将向上游发送
wav
,POST/upload,编码为base64,以及元数据。服务器必须解码数据
并将其保存到文件系统:
class Audio {
static createPayload(audioBlob) {
return new Promise(function (resolve, reject) {
const r = new FileReader();
r.readAsDataURL(audioBlob);
r.onloadend = function () {
resolve(JSON.stringify({
filename: `${new Date().toISOString()}.wav`,
mimeType: 'audio/wav',
transferEncoding: 'base64',
data: r.result
}));
};
});
}
}
stopRecording(async function (audioBlob) {
const payload = await Audio.createPayload(audioBlob);
const xhr = new XMLHttpRequest();
xhr.open('POST', '/upload');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(payload);
}, false);
这会将
wav
上游、POST/upload和元数据一起发送,编码为base64。服务器必须解码数据
并将其保存到文件系统:
class Audio {
static createPayload(audioBlob) {
return new Promise(function (resolve, reject) {
const r = new FileReader();
r.readAsDataURL(audioBlob);
r.onloadend = function () {
resolve(JSON.stringify({
filename: `${new Date().toISOString()}.wav`,
mimeType: 'audio/wav',
transferEncoding: 'base64',
data: r.result
}));
};
});
}
}
stopRecording(async function (audioBlob) {
const payload = await Audio.createPayload(audioBlob);
const xhr = new XMLHttpRequest();
xhr.open('POST', '/upload');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(payload);
}, false);
你为什么不把blob作为base64发送到上游?@Rafael我不擅长javascript。我正在试图修改一段我在网上找到的代码,为什么你不把blob作为base64发送到上游?@Rafael我不擅长javascript。我正在尝试修改我在网上找到的代码这是服务器上的目录吗?是否无法直接将其上载到文件夹?如果客户端可以直接访问服务器的文件系统,那将非常可怕。服务器总是调解客户端/后端。这是服务器上的目录吗?不能直接将其上载到文件夹吗?如果客户端可以直接访问服务器的文件系统,那就太可怕了。服务器始终协调客户端/后端。