Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从blob url下载数据_Javascript_Apache - Fatal编程技术网

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。我正在尝试修改我在网上找到的代码这是服务器上的目录吗?是否无法直接将其上载到文件夹?如果客户端可以直接访问服务器的文件系统,那将非常可怕。服务器总是调解客户端/后端。这是服务器上的目录吗?不能直接将其上载到文件夹吗?如果客户端可以直接访问服务器的文件系统,那就太可怕了。服务器始终协调客户端/后端。