2013-05-13 75 views
1

我與PhoneGap的插科打諢的一個項目的時候,但我遇到了一些麻煩上傳MP3播放PhoneGap的文件傳輸腐化.MP3上傳到服務器

我可以在使用記錄的MP3設備的內置麥克風,我就能夠使用上傳文件以下JavaScript:

var audio_name = 'fyp_app_recording_' + Math.round(new Date().getTime()/1000) + '.mp3'; 

// Record audio 
// 
function recordAudio() { 

    var src = audio_name; 
    var mediaRec = new Media(src, onSuccess(src), onError); 

    // Record audio 
    mediaRec.startRecord(); 

    // Stop recording after 10 sec 
    var recTime = 0; 
    var recInterval = setInterval(function() { 
     recTime = recTime + 1; 
     setAudioPosition("Recording Audio - " + recTime + " sec"); 
     if (recTime >= 10) { 
      clearInterval(recInterval); 
      mediaRec.stopRecord(); 
      setAudioPosition("Recording Saved As " + src); 
     } 
    }, 1000); 
} 

// onSuccess Callback 
// 
function onSuccess(src) { 
    console.log("recordAudio():Audio Success" + src); 
} 

// onError Callback 
// 
function onError(error) { 
    alert('code: ' + error.code + '\n' + 
      'message: ' + error.message + '\n'); 
} 

// Set audio position 
// 
function setAudioPosition(position) { 
    document.getElementById('audio_position').innerHTML = position; 
} 

//File upload 

    function uploadAudio() {  

     var options = new FileUploadOptions(); 
     options.fileKey="file"; 
     options.fileName="test.mp3"; 
     options.mimeType="audio/mpeg"; 

     var ft = new FileTransfer(); 
     ft.upload("mnt/sdcard/" + audio_name, "http://www.richardsonweb.co.uk/fyp/test1/upload.php", win, fail, options); 
    } 

    function win() { 
     alert("Yay! It worked!"); 
    } 

    function 7(error) { 
     alert("An error has occurred: Code = " = error.code); 
    } 

的upload.php的文件包含以下代碼:

print_r($_FILES); 



$new_file_name = time() . ".mp3"; 
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/".$new_file_name); 

然而,當我再downloa d來自我的FTP客戶端的文件,Windows Media Player聲稱文件已損壞。

奇怪的是,VLC中播放的文件排序很好(進度條在10秒內卡住,並且不移動,但它完美播放音頻)。

任何想法,爲什麼會發生這種情況?提前致謝!

回答

2

嘗試使用這個PHP代碼

<?php 
    $destination_path = getcwd().DIRECTORY_SEPARATOR; 

    $result = 0; 

    $target_path = $destination_path . time() . ".mp3"; 

    ini_set("upload_max_filesize", "3200000000"); 

    if(@move_uploaded_file($_FILES['file']['tmp_name'], $target_path)) { 
     $result = 1; 
    } 

    sleep(1); 
?> 
+0

感謝您的幫助(這也仍然將文件移動到服務器上),但由於某種原因,該文件仍然被損壞。任何想法,爲什麼這可能會發生? – 2013-05-14 14:19:45

+0

也許這是最大文件上傳限制嘗試此設置ini_set(「upload_max_filesize」,「3200000000」); – 2013-05-14 16:59:42

+0

@LiamRichardson,你爲什麼接受了答案,設置upload_max_filesize爲你解決了這個問題? – Ionut 2016-09-14 08:52:17