Tôi đã tải lên bằng JavaScript, PHP và Cordova. Mọi thứ đều hoạt động tốt. Nhưng khi tôi cố gắng để mở mp3 tải lên trong trình duyệt hoặc máy nghe nhạc một máy tính để bàn như Windows Media Player, nó nói rằng tập tin bị hỏng. Bất kỳ ý tưởng tại sao điều này đang xảy ra?Tại sao âm thanh tải lên bị hỏng khi tải lên rõ ràng là thành công?
Tôi cũng phải nói rằng khi tôi kiểm tra tệp bị hỏng trong trình duyệt, nó có thẻ video thay vì thẻ âm thanh.
Mã của tôi:
//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);
});
máy chủ xử lý side script trong 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;
}
?>
CẬP NHẬT:
Dường như vấn đề nằm bên trong file (mà trên công trình android đang chơi). Tôi đã sao chép các tập tin thông qua thiết bị USB và cố gắng chơi nó và có cùng một vấn đề, tập tin sẽ không chơi. Tôi phải nói rằng tệp được ghi bằng cách sử dụng plugin phương tiện từ cordova. Có lẽ đây là vấn đề, phải không?
THỨ HAI CẬP NHẬT:
tôi ghi lại và tải lên một tập tin như một định dạng .amr
và chuyển đổi nó để .mp3
trực tuyến here và các công trình âm thanh. Bất kỳ ý tưởng về cách giải quyết vấn đề này?
** ft.upload() ** thực sự đang làm gì? –
@TodorKostov, nó xử lý việc tải lên, sử dụng AJAX. Nó gửi tệp infos đến tập lệnh upload.php. – Ionut
rõ ràng là nó đang làm điều đó. Câu hỏi là thế nào? Có phải đó là điều bạn đã tự viết (nó có nghĩa là lỗi và lỗi có thể) HOẶC nó có phải là chức năng của bên thứ ba (điều đó cũng có nghĩa là lỗi có thể, nhưng ở mức độ thấp hơn)? Nếu nó đến từ một thư viện được sử dụng bởi hundrests của các nhà phát triển hoặc một cái gì đó như thế, thì có lẽ vấn đề là không theo cách bạn đang tải lên các tập tin. Điều này sẽ giúp chúng tôi tìm ra vấn đề. –