通过文件传输上传时清空$ _FILE和$ _POST superglobals

时间:2016-09-21 08:04:35

标签: javascript php android cordova file-transfer

我正在创建一个移动网络应用,用户可以上传其图片并将其用作头像。在android studio模拟器中测试它一切正常,成功的功能提醒一切都已完成。但是我的$ _POST和$ _FILES是空的。

JS:

var pictureSource;   // picture source
var destinationType; // sets the format of returned value

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
    pictureSource = navigator.camera.PictureSourceType;
    destinationType = navigator.camera.DestinationType;
}

function clearCache() {
    navigator.camera.cleanup();
}

var retries = 0;
function onCapturePhoto(fileURI) {
    var win = function (r) {
        clearCache();
        retries = 0;
        alert('Done!');
    }

    var fail = function (error) {
        if (retries == 0) {
            retries ++
            setTimeout(function() {
                onCapturePhoto(fileURI)
            }, 1000)
        } else {
            retries = 0;
            clearCache();
            alert('Ups. Something wrong happens!');
        }
        alert(error);
    }

    var options = new FileUploadOptions();
    options.fileKey = "file";
    options.fileName = fileURI.substr(fileURI.lastIndexOf('/') + 1);
    options.mimeType = "image/jpeg";

    var params = {};
    params.username = curr_username;
    alert('username: ' + params.username);

    options.params = params;
    var ft = new FileTransfer();
    ft.upload(fileURI, encodeURI("some-server/file_upload.php"), win, fail, options, true);
}

function capturePhoto() {
    navigator.camera.getPicture(onCapturePhoto, onFail, {
        quality: 100,
        destinationType: destinationType.FILE_URI
    });
}

function onFail(message) {
    alert('Failed because: ' + message);
}

PHP:

<?php
    $con = mysqli_connect("localhost","db_user","db_user_pw","db_name") or die(mysqli_connect_error());

    // ako u javasdcriptu nemaš pristup user_id-u, treba poslat username i ovdje fetchat iz baze odgovarajući user_id
    $output = print_r($_POST, true);
    file_put_contents('username.txt', $output);
    $output = print_r($_FILES, true);
    file_put_contents('file.txt', $output);
    $username = $_POST['username'];
    $tmp_file_name = $_FILES["file"]["tmp_name"];
    $file_name = "images/" . $username . '.jpg';

    // remove the file if exists
    if(file_exists($file_name)) {
        unlink($file_name); 
    }
    // upload new file
    move_uploaded_file($tmp_file_name, $file_name);



    $file_name = "path_to_images_folder/".$file_name;

    // update database
    $q = mysqli_query($con,"UPDATE users SET avatar = '$file_name' WHERE id = (SELECT id WHERE username = '$username')");

    if($q)
        echo "success";
    else
        echo "error";

?>

任何想法为什么会发生这种情况,因为我正在失去理智

0 个答案:

没有答案