Comment récupérer des données POST à partir de L'API de transfert de fichiers PhoneGaps

J'utilise L'API de transfert de fichiers Phone Gaps (Cordova 2.1) pour afficher une image de la photothèque de l'utilisateur sur mon serveur. L'API de transfert de fichiers semble fonctionner correctement. Je suis perplexe à l'idée de récupérer ces informations sur mon serveur.

idéalement, ce que je dois faire est de récupérer l'image puis de la télécharger sur mon serveur. Cependant, je ne semble pas pouvoir récupérer des informations à partir du transfert de fichier?

Mon code JavaScript (affichage des données d'image) est:

function onDeviceReady() {

            // Retrieve image file location from specified source
            navigator.camera.getPicture(uploadPhoto,
                                        function(message) { alert('get picture failed'); },
                                        { quality: 50, 
                                        destinationType: navigator.camera.DestinationType.FILE_URI,
                                        sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY }
                                        );

        }

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

            var params = {};
            params.value1 = "test";
            params.value2 = "param";

            options.params = params;

            var ft = new FileTransfer();
            ft.upload(imageURI, encodeURI("http://some.server.com/upload.php"), win, fail, options);
        }

        function win(r) {
            console.log("Code = " + r.responseCode);
            console.log("Response = " + r.response);
            console.log("Sent = " + r.bytesSent);
        }

        function fail(error) {
            alert("An error has occurred: Code = " + error.code);
            console.log("upload error source " + error.source);
            console.log("upload error target " + error.target);
        }

Mon le code côté serveur est:

 $paramValue = $_POST['fileKey']; //Undefined variable
 $paramValue2 = $_POST['options']; //Undefined variable
$paramValue3 = $paramValue2['fileKey'] //Undefined variable

j'ai aussi essayé:

//POST variable
$paramValue = $_POST['params'];
echo "Param Value1: " . $paramValue['value1']; //Should return "test"

j'ai aussi essayé:

//POST variable
$paramValue = $_POST['options'];
echo "Param Value1: " . $paramValue['options']['params']['value1']; //Should return "test"

Tout ce que je reçois est des erreurs de variables non définies?

Toute aide serait grandement apprécié, merci!

12
demandé sur Danny 2012-12-13 17:00:26

3 réponses

http://some.server.com vous pouvez avoir votre /var/www/ répertoire, dans ce répertoire que vous devez télécharger.php et le code dans ce répertoire doit déplacer votre image dans le dossier

/var/www/TEST/

<?php
   print_r($_FILES);
   $new_image_name = "YEAH.jpg";
   move_uploaded_file($_FILES["file"]["tmp_name"], "/var/www/TEST/".$new_image_name);
?>

C'est la seule chose supplémentaire dont vous avez besoin.

condition préalable:

XAMPP LAMPE WAMP ou MAMP sur votre http://some.server.com

pour plus de clarté, Ceci est le JavaScript et HTML juste pour vous montrer comment mon télécharger.le fichier php s'adapte: Dans votre tête

<script type="text/javascript" charset="utf-8">

// Wait for PhoneGap to load
document.addEventListener("deviceready", onDeviceReady, false);

// PhoneGap is ready
function onDeviceReady() {
    console.log("device ready");
    // Do cool things here...
}

function getImage() {
    // Retrieve image file location from specified source
    navigator.camera.getPicture(uploadPhoto, function(message) {
                alert('get picture failed');
            },{
                quality: 50,
                destinationType: navigator.camera.DestinationType.FILE_URI,
                sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY
            }
    );

}

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

    var params = new Object();
    params.value1 = "test";
    params.value2 = "param";

    options.params = params;
    options.chunkedMode = false;

    var ft = new FileTransfer();
    ft.upload(imageURI, "http://some.server.com/TEST/upload.php", win, fail, options);
}

function win(r) {
    console.log("Code = " + r.responseCode.toString()+"\n");
    console.log("Response = " + r.response.toString()+"\n");
    console.log("Sent = " + r.bytesSent.toString()+"\n");
    alert("Code Slayer!!!");
}

function fail(error) {
    alert("An error has occurred: Code = " + error.code);
}

</script>

</head>

et c'est ce que j'ai dans mon corps

<button onclick="getImage();">Upload a Photo</button>
19
répondu iOSAndroidWindowsMobileAppsDev 2018-08-03 01:19:02

une chose de plus qui est souvent négligée: Cette section sur le client fichier js:

options.fileKey="file";

Doit correspondre à cette partie sur le côté serveur:

$_FILES["file"]

Sinon, vous obtiendrez une erreur qui ne serait pas ce qu'. Cela peut sembler évident pour certains, mais cela pourrait en sauver d'autres une heure ou deux.

12
répondu Will 2013-05-20 22:49:42

pour accéder aux valeurs des paramètres, accédez-les directement en tant que POST. Pour par exemple

côté Serveur : echo "Param Value1: " . $_POST['value1']; //will return "test" as output.

9
répondu Yogesh Malpani 2013-06-26 11:02:51