【问题标题】:save blob file to server将 blob 文件保存到服务器
【发布时间】:2016-01-28 14:10:50
【问题描述】:

我正在尝试将录制的文件保存到服务器。 出于录制目的,我正在使用演示 recorder

在录制结束时,它会给我一个指向录制文件的 blob 链接。 所以在谷歌搜索了一下之后,我发现我可以使用那个 bob url 来保存它。
Here 是关于保存 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

?>

在浏览器中编译时出现 2 个错误
1-拒绝设置不安全的标头“Content-length”。
2-POST savefile.php 500

我想php文件有问题!
如何处理这些错误并完成上传任务?
是否有任何开源允许直接将 blob-url 上传到服务器而不使用 php?
我感谢任何帮助和建议!

【问题讨论】:

    标签: javascript php html


    【解决方案1】:

    尝试删除该行: req.setRequestHeader("内容长度", data.length);

    XMLHttpRequest 不允许设置这些标头,因为这将是一个安全漏洞。 500 很可能是请求失败的结果。

    您可以在此处http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method阅读有关 XMLHttpReqest 的信息

    这里有一些其他线程,同样的问题:

    Pass Blob through ajax to generate a file

    How can javascript upload a blob?

    【讨论】:

      猜你喜欢
      • 2017-03-19
      • 2015-03-18
      • 2013-04-24
      • 1970-01-01
      • 2018-04-20
      • 1970-01-01
      • 2020-02-11
      • 1970-01-01
      • 2020-06-11
      相关资源
      最近更新 更多