php - 仅播放6秒的base64编码音乐文件

标签 php mysql audio base64

你好,我有一个过程,正在上载.mp3格式的文件,将其转换为base64,然后将其保存到数据库中(当您从数据库中拉出文件以播放此文件的仅6秒钟时)?我似乎无法找出我哪里出了问题。
我只在我正在创建的网站的测试阶段,但是我想在我正式将网站完全淘汰之前得到正确的设置,我已经设置了可以正常工作的图像,但是音频和视频却存在严重问题用。
这是上传表单的代码

    <form action="action2.php" method="post" enctype="multipart/form-data">
    <label for="file">Filename:</label>
    <input type="file" name="file" id="file" /><br />
    <input type="text" name="user_id" value="<?php echo $_SESSION['user_id'] ?>" hidden="" />
    <input type="submit" name="submit" value="Submit" />
    </form>

这是上传,存储,编码和删除文件的部分。
    <?php
    require 'assests/classes/init.php';

    $temp = explode(".", $_FILES["file"]["name"]);
    $extension = end($temp);
     $allowedExts = array("mp3","wav","ogg");
    if ((($_FILES["file"]["type"] == "audio/mpeg")
    || ($_FILES["file"]["type"] == "audio/x-mpeg")
    || ($_FILES["file"]["type"] == "audio/mp3")
    || ($_FILES["file"]["type"] == "audio/x-mp3")
    || ($_FILES["file"]["type"] == "audio/mpeg3")
    || ($_FILES["file"]["type"] == "audio/x-mpeg3")
    || ($_FILES["file"]["type"] == "audio/mpg")
    || ($_FILES["file"]["type"] == "audio/x-mpg")
    || ($_FILES["file"]["type"] == "audio/x-mpegaudio")
    || ($_FILES["file"]["type"] == "audio/wav")
    || ($_FILES["file"]["type"] == "audio/x-wav")
    || ($_FILES["file"]["type"] == "audio/ogg"))   
    && ($_FILES["file"]["size"] < 2000000000000000000000)
    && in_array($extension, $allowedExts))
      {
      if ($_FILES["file"]["error"] > 0)
        {
        echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
        }
      else
        {
        echo "Upload: " . $_FILES["file"]["name"] . "<br>";
        echo "Type: " . $_FILES["file"]["type"] . "<br>";
        echo "Size: " . ($_FILES["file"]["size"] / 1048576) . " MB<br>";
        echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
        echo (20000000 / 1024);
        if (file_exists("upload/" . $_FILES["file"]["name"]))
          {
          echo $_FILES["file"]["name"] . " already exists. ";
          }
        else
          {
          move_uploaded_file($_FILES["file"]["tmp_name"],
          "upload/" . $_FILES["file"]["name"]);
          var_dump($_FILES);
          $byte_array = file_get_contents("upload/" . $_FILES["file"]["name"]);
          $audio = base64_encode($byte_array);
          unlink('upload/'.$_FILES["file"]["name"]);
          $jk = new users;
          $jk->audio_upload($_POST['user_id'],$audio);
          echo $audio;
          var_dump($jk->audio_upload($_POST['user_id'],$audio));
          var_dump($audio);
          }
        }
      }
    else
      {
      echo "Invalid file";
      }

    var_dump($_FILES);
    var_dump($extension);
    ?>

然后我用它来玩
    <?php
    $jk = new users;
    $audio = $jk->testing_audio_base_64($_SESSION['user_id']);
    var_dump($audio);
    ?>
    <audio controls >
   <?php echo '<source src="data:audio/mp3;base64, '.$audio.'" >'?>
     Your browser does not support the audio element.
    </audio>

但是它只显示文件的6秒?
我在这里做错了吗?

最佳答案

某些浏览器会限制数据网址的大小,例如IE8

Data URIs cannot be larger than 32,768 characters.



Gecko

Although Mozilla supports data URIs of essentially unlimited length, browsers are not required to support any particular maximum length of data. For example, the Opera 11 browser limits data URIs to around 65000 characters.



另一个问题可能是PHP最大发布/上传大小或内存限制。

关于php - 仅播放6秒的base64编码音乐文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20949598/

相关文章:

java - 当另一个声音播放时停止播放上一个声音

php - MYSQL 选择超过 2 年的数据

javascript - 如何在 JQuery 中使用 foreach 循环

php - 如何从具有字段和许多输入值的表中获取行以检查字段?

php - 可以在 1 个查询中插入 700 行吗?

Java 转换音频格式

javascript - 如何跟踪服务器中音频文件的播放次数?

php - ajax中的功能不起作用

mysql - 在 Rails 4.0 中选择标签和多对多关系

html - Microsoft Edge播放曾经是下载的音频文件