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!
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>
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.
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.