【问题标题】:Cordova file upload not working on androidCordova文件上传无法在android上运行
【发布时间】:2016-09-19 09:25:28
【问题描述】:

使用 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';
}
?>

【问题讨论】:

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


    【解决方案1】:

    你必须创建一个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 脚本上。

    我用这个返回上传文件的url

    <?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;
    
    ?>
    

    【讨论】:

    • 创建 FileUploadOptions 对象后仍然没有上传文件。
    • 好的,如果调用成功,问题可能出在服务器上,用我的代码试试
    猜你喜欢
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 2012-12-31
    相关资源
    最近更新 更多