Я сделал загрузку с использованием JavaScript, PHP и Cordova. Все работает нормально. Но когда я пытаюсь открыть загруженный mp3 в браузере или настольном проигрывателе, таком как Windows Media Player, он говорит, что файл поврежден. Любая идея, почему это происходит?
Я также должен сказать, что, когда я проверяю поврежденный файл в браузере, у него есть видео теги вместо звуковых тегов.
Мой код:
//method to upload the audio
function uploadAudio(recordedSrc) {
var win = function(r) {
console.log("Code = " + r.responseCode);
console.log("Response = " + r.response);
console.log("Sent = " + r.bytesSent);
}
var fail = function(error) {
alert("An error has occurred: Code = " + error.code);
console.log("upload error source " + error.source);
console.log("upload error target " + error.target);
}
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = "recordupload.mp3";
options.mimeType = "audio/mpeg";
console.log(options);
var ft = new FileTransfer();
console.log(ft);
console.log(recordedSrc);
ft.upload(recordedSrc, encodeURI(app_url + "json/upload.php"), win, fail, options);
}
$('.upload').on('click', function(e) {
e.preventDefault();
//Method to upload Audio file to server
uploadAudio(mediaRecSrc);
});
Обработка на стороне сервера script в PHP:
<?php
// Where the file is going to be placed
$target_path = dirname(__FILE__) . "/uploaded_records/";
if (!file_exists($target_path)) {
mkdir ($target_path, 0777);
}
/* Add the original filename to our target path.
Result is "uploads/filename.extension" */
$target_path = $target_path . basename( $_FILES['file']['name']);
$path = $_FILES['file']['name'];
$ext = pathinfo($path, PATHINFO_EXTENSION);
var_dump("ext is: " . $ext);
if(move_uploaded_file($_FILES['file']['tmp_name'], $target_path)) {
echo "The file ". basename( $_FILES['file']['name']).
" has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
echo "filename: " . basename( $_FILES['file']['name']);
echo "target_path: " .$target_path;
}
?>
ОБНОВЛЕНИЕ:
Кажется, что проблема заключается в файле (который работает в Android). Я скопировал файл через USB-устройство и попытался воспроизвести его, и есть та же проблема, файл не будет воспроизводиться. Я должен сказать, что файл записывается с использованием медиа-плагина из кордовы. Может быть, это проблема, верно?
ВТОРОЕ ОБНОВЛЕНИЕ:
Я записал и загрузил файл в формате .amr
и преобразовал его в .mp3
онлайн здесь, и звук работает. Любая идея о том, как решить эту проблему?