Ich habe eine Cross-Plattform-App mit Monaca/Onsen UI und AngularJS gebaut. Die App ermöglicht es Benutzern, Bilder (Fotos) zu machen, und dies funktioniert wie vorgesehen.Hochladen von Bildern von der App auf den Server mit PHP
Als nächstes möchte ich die Bilder auf meinen Server für die Speicherung und zukünftige Verwendung hochladen.
Ich habe die App Bilderfassung funktioniert wie vorgesehen und ich habe eine PHP-Lösung auf dem Server, dass erscheint funktioniert, aber ich kann nicht scheinen, um die Bilder zu sehen.
Mein App-Code für die Erfassung und Upload sieht wie folgt aus (im Moment habe ich nur Zugriff auf das Bild Bibliothek und wählen Sie die Bilder zum Testen - anstatt sie zu erfassen - aber beide Lösungen arbeiten):
$scope.takePicture = function getImage() {
navigator.camera.getPicture(uploadPhoto, function (message) {
alert('get picture failed');
}, {
quality: 100, 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://mysite/public/api/savephotos.php", function (result) {
alert("Success: " + JSON.stringify(result)); // Success: {"bytesSent":42468,"responseCode":200,"response":"","objectId":""}
}, function (error) {
alert("Fail: " + JSON.stringify(error));
}, options);
}
Von der Erfolg Antwort Es scheint, dass Bilder gesendet werden, aber wenn ich den Ordner überprüfen, in dem die Bilder gespeichert werden sollen (C: \ xampp \ htdocs \ public \ api \ upload), ist der Ordner leer. Die serverseitigen Details sind die Sximo-Vorlage, die das in AWS gehostete Laravel-Framework verwendet.
Der PHP-Code, der die Server-Seite Spar Griffe sieht wie folgt:
<?php
// Connect to Database
$DB_HOST = 'localhost';
$DB_USER = 'root';
$DB_PASS = '';
$DB_NAME = 'myDB';
$mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
// Allow Headers
header('Access-Control-Allow-Origin: *');
$new_image_name = urldecode($_FILES["file"]["name"]).".jpg";
// Move files into upload folder
move_uploaded_file($_FILES["file"]["tmp_name"], 'C:\xampp\htdocs\public\api\upload'.$new_image_name);
mysqli_close($mysqli);
jedoch die C: \ xampp \ htdocs \ public \ api \ upload ist leer - ohne Bilder an ihn gesendet . Ich habe eine Datei mit dem Namen uploadimage, die an das Verzeichnis * C: \ xampp \ htdocs \ public \ api * gesendet wurde, das mit jedem Test aktualisiert wird - aber das ist eine leere (0kb) Datei.
Wohin gehe ich falsch damit?