2014-01-06 2 views
-2

안녕하세요 .mp3 형식의 파일을 base64로 변환 한 다음 데이터베이스에 저장하면 데이터베이스에서 파일을 가져 와서 재생합니다. 이 파일을 6 초 동안 재생 했나요? 나는 내가 어디로 잘못 갔는지 알아낼 수 없습니다. 나는 만들고있는 사이트에 대해서만이 테스트 단계에 있지만 실제로 사이트를 완전히 나가기 전에이 권한을 얻고 싶습니다. 완벽하게 작동하는 이미지를 설정했지만 오디오 및 비디오는 전공으로 설정하고 있습니다. 문제. 이 양식을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 초 보여줍니다? 내가 여기서 뭔가 잘못 했습니까?

+0

에 TXT에서 유형을 changeing하고 적절한 작업 않네 그래서? base64로 인코딩 한 내용이 실제로 데이터베이스에 저장되었는지 확인 했습니까? 데이터베이스에 저장된 내용이 실제로 데이터 URL에 표시되는지 확인 했습니까? 특정 브라우저에서 데이터 URL의 크기 제한을 초과하지 않았 음을 확인 했습니까? – Oswald

+0

데이터베이스에서 파일을 검사하여 올바르게 업로드했는데 데이터 URL에 있는지 확인했습니다. 보기 소스는

답변

0

특정 브라우저는 데이터 URL의 크기를 제한합니다. IE8

데이터 URI는 32,768자를 초과 할 수 없습니다.

또는

모질라는 기본적으로 무제한 길이의 데이터 URI를 지원하지만 Gecko이 브라우저는 데이터의 특정 최대 길이를 지원 할 필요가 없습니다. 예를 들어, Opera 11 브라우저는 데이터 URI를 약 65000 자로 제한합니다.

또 다른 문제는 PHP 최대 게시/업로드 크기 또는 메모리 제한 일 수 있습니다.

+0

최대 게시/업로드 크기 $ _FILES [ "file"] [ "error"]'는 에러를 나타냅니다. 메모리 한계를 초과하면 치명적인 에러가 발생합니다. – Oswald

+0

올바르게 업로드되고 데이터베이스에서만 올바르게 저장됩니다 이 파일의 6 초가 내가 가지고있는 오디오 컨트롤과 관련이있을 수 있습니까? –

+0

사용중인 브라우저의 설명서를 참조하여 브라우저에서'controls' 속성의 효과를 확인하십시오. – Oswald

0

나는 TXT로 저장 한하지 않는 LONGBLOB가 수정 문제를 분석하기 위해 수행 한 어떤 긴 덩어리

관련 문제