我正在尝试将录制的文件保存到服务器。出于记录目的,我使用演示记录器
录制结束时,它给了我一个指向录制文件的Blob链接。因此,在谷歌搜索了一下之后,我发现可以使用该bob网址进行保存。
这是讨论保存Blob的链接。之后,我尝试获取它并下载到服务器。
1-我获得了指向Blob文件的链接
var data = document.getElementById("save").href
之后,我在index.html文件中使用js代码将
blob url发送到php代码。
JS代码
<script>
function saveAudio(){
var req = null;
var url = "savefile.php";
var data = document.getElementById("save").href.toString();// document.getElementById("save").innerHTML;// = xhttp.responseText;; // you have to check how to get the data from your saveAudio() method
window.alert(data);
(window.XMLHttpRequest) ? req = new XMLHttpRequest() : (window.ActiveXObject) ? req = new ActiveXObject("Microsoft.XMLHTTP") : req = false;
req.open("POST", url, true);
req.setRequestHeader("Content-Type", "multipart/form-data");
if(data != null) //&& data != "")
{
req.setRequestHeader("Content-length", data.length);
req.send(data);
}}
</script>
PHP代码
<?php
$save_folder = dirname(__FILE__) ."/js";
if(! file_exists($save_folder)) {
if(! mkdir($save_folder)) {
die("failed to create save folder $save_folder");
}
}
$key = 'filename';
$tmp_name = $_FILES["audiofile"]["tmp_name"];
$upload_name = $_FILES["audiofile"]["name"];
$type = $_FILES["audiofile"]["type"];
$filename = "$save_folder/$upload_name";
$saved = 0;
if(($type == 'audio/x-wav' || $type == 'application/octet-stream') && preg_match('/^[a-zA-Z0-9_\-]+\.wav$/', $upload_name) ) {
$saved = move_uploaded_file($tmp_name, $filename) ? 1 : 0;
}
//name is needed to send in the php file
?>
在浏览器
1中进行编译时,出现2个错误,拒绝设置不安全的标头“ Content-length”。
2-POST savefile.php 500
我想php文件有问题!
如何处理这些错误并完成上传任务?
是否有任何开放源代码可以直接将blob-url上传到服务器,而无需使用php?
感谢您的帮助和建议!
尝试删除该行:req.setRequestHeader(“ Content-length”,data.length);
不允许XMLHttpRequest设置这些标头,因为那将是一个安全漏洞。500很可能是请求失败的结果。
您可以在此处http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method阅读有关XMLHttpReqest的信息。
这是其他一些相同问题的线程:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句