2017-02-22 17 views
0

PhoneGapに奇妙な問題があります。アプリケーションからビデオを録画し、サーバーにアップロードしようとしています。PhoneGapビデオを録画してサーバーにアップロード

app.initialize(); 

    $(function(){ 
     //capture callback 
     var captureSuccess = function(mediaFiles) { 
     var i, len; 
     for(i = 0, len = mediaFiles.length; i < len; i += 1) { 
      uploadFile(mediaFiles[i]); 
     } 
     }; 

     function uploadFile(mediaFiles) { 
     var options = new FileUploadOptions(); 
     options.fileKey = 'file'; 
     options.fileName = mediaFiles.name; 
     options.contentType = 'video/mp4'; 
     options.mimeType = mediaFiles.type; 
     options.chunkedMode = true; 

     var ft = new FileTransfer(); 
     var path = mediaFiles.fullPath; 
     //var name = mediaFiles.name; 

     ft.upload(path, 
      'http://domainName/~me/upload.php', 
      function(result) { //success callback 
      navigator.notification.alert('Path: ' + path + ' bytesSent: ' + result.bytesSent + ' responseCode: ' + result.responseCode + ' response: ' + result.response, null, 'Upload Error'); 
      $("#infoMessage").html('Success!'); 
      }, 
      function(error) { //error callback 
      navigator.notification.alert('Error uploading file ' + path + ', Error code: ' + error.code + ' Target: ' + error.target + ' http_status: ' + error.http_status + ' Body: ' + error.body + ' Exception: ' + error.exception.toString(), null, 'Upload Error'); 
      $("#infoMessage").html('Problem') 
      }, 

      options); 
     } 

     // capture error callback 
     var captureError = function(error) { 
     navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error'); 
     }; 

     //start video capture 
     var accessCamera = function() { 
     navigator.device.capture.captureVideo(captureSuccess, captureError, { limit:1 }); 
     }; 

       $("#cambtn").on('click', accessCamera); 

私はPostmanアプリケーションでテストしなければなりません。私はPhoneGapのアプリケーション「成功コールバック」から取得すること 応答は次のとおりです。Screenshot

サーバーサイドスクリプトは、今のところとても基本的なものです:

$target_dir = "uploads/"; 
if(isset($_FILES['file'])) { 
    $target_file = $target_dir . basename($_FILES["file"]["name"]); 
    move_uploaded_file($_FILES['file']['tmp_name'], $target_file); 
} 
print_r($_FILES); //This line returns empty array when request is send by the application but it returns array with data when I test it with Postman. 
die(); 

問題はchunkedModeオプションによるものでした。 falseに設定する必要があります。

答えて

0

あなたの成功コールバック関数は、「アップロードエラーは、」あなたがそうスクリーンショットで見ることができるように、最後のパラメータは、ポップアップ通知だけのタイトルであることを右

 function(result) { //success callback 
      navigator.notification.alert('Path: ' + path + ' bytesSent: ' + result.bytesSent + ' responseCode: ' + result.responseCode + ' response: ' + result.response, null, 'Upload Error'); 
      $("#infoMessage").html('Success!'); 
+0

にすべての方法をスクロールした場合、それは問題ではありませんと言いますまったく。 – xcentric

+0

ご迷惑をおかけいたしました。エラーを説明しているコードのコメントを見る前に、画像に「アップロードエラー」が表示されました。私はアンドロイドモニターとサーバーのログをチェックします。 PHPにログを書き込ませ、そこでトラブルシューティングを行うこともできます。私はhttp://stackoverflow.com/questions/29099303/uploading-file-over-https-with-cordova-filetransferを見ていて、エラーがあってもsuccessブロックが呼び出される可能性があるかどうかを調べるURLはホワイトリストに登録されていないか、そのようなものではありません。 –

+0

ヘッダー( 'Access-Control-Allow-Origin:*')もチェックしてください。あなたのPHPで –

関連する問題