Cordova文件上传不适用于android

时间:2016-09-19 09:25:29

标签: android cordova phonegap-plugins cordova-plugins file-transfer

使用cordova媒体捕获和文件传输插件我尝试制作一个应用程序来录制视频并上传到服务器上。录制视频后,我调用上传功能,并在成功回调函数中显示成功消息。但是没有文件上传到服务器中。这是我的代码。

            $(document).ready(function(){
                document.addEventListener("deviceready", onDeviceReady, false);
            });

            function onDeviceReady() {
            navigator.device.capture.captureVideo(captureSuccess, captureError, {limit:1});
            }
            var captureSuccess = function(mediaFiles) {
                        var i, len;
                        for (i = 0, len = mediaFiles.length; i < len; i += 1) {
                            uploadFile(mediaFiles[i]);
                        }
                };

            var captureError = function(error) {
               alert('error');
               console.log(error);
            };

            /********* File Upload  **********/

            // Upload files to server
                function uploadFile(mediaFile) {
                    var ft = new FileTransfer(),
                        path = mediaFile.fullPath,
                        name = mediaFile.name;



                    ft.upload(path,
                        "http://myserver.com/test.php",
                        function(result) {
                            alert('success');
                        },
                        function(error) {
                           alert('error');
                        },
                        { fileName: name, fileKey: "file" });
                }

我的PHP代码是

<?php
if($_FILES['file']['size'] > 0) {
$path = $_SERVER['DOCUMENT_ROOT']."/audior/app/";
$tmpname1 = $_FILES['file']['tmp_name'];
$ptname1 = $_FILES['file']['name'];
move_uploaded_file($tmpname1, $path . $ptname1);

echo 'success';
}
?>

1 个答案:

答案 0 :(得分:0)

您必须创建一个FileUploadOptions对象

var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = name;

然后在上传功能

上使用它
ft.upload(path, 
          "http://myserver.com/test.php",          
          function(result) {
              alert('success');
          },
          function(error) {
              alert('error');
          },
          options);

您也可以更改

function(result) { 
    alert('success'); 
}

function(result) { 
    alert(result); 
} 

只是检查服务器是否在告诉你什么。

如果您获得成功回调,问题应该在PHP脚本上。

我使用这个返回上传文件的网址

<?php

$target_dir = "upload/";
$target_file = $target_dir . basename($_FILES["file"]["name"]);
move_uploaded_file($_FILES["file"]["tmp_name"], "./" . $_FILES["file"]["name"]);
echo "http://" . $_SERVER['SERVER_NAME'] . "/" . $target_file;

?>