Intereting Posts
Изменение сегодняшней даты и времени в php Эффективно найти вложенный элемент массива PHP на основе значения атрибута Я не могу найти dompdf_config.inc.php или dompdf_config.custom.inc.php для установки «DOMPDF_UNICODE_ENABLED» true Как запустить сценарий оболочки как другой пользователь с PHP на Nginx? Буфер дополнительной информации с буфером PHP Сверхпростой статический файл (html) кэш php сайта Как использовать php-intl для преобразования кодов стран в локализованные названия стран Добавление пользовательского обратного вызова к проверке формы Codeigniter увеличить и уменьшить значение с помощью переключателя PHP-массив отражает повторяющиеся значения Числа в кавычках с использованием json_encode () Ошибка cuRL returnin 404 При использовании PHP CLI – APC вылетает apache – apc_fcntl_lock не удалось выполнить errno: 6 PHP: делает ли повторение хэш более безопасным? Хеширование паролей, совместимое с Java и PHP

Как получить данные POST из API передачи файлов PhoneGaps

Я использую API-интерфейсы для передачи файлов с помощью телефона (Cordova 2.1), чтобы отправить изображение из библиотеки фотографий пользователей на мой сервер. API передачи файлов, похоже, работает нормально. Я просто озадачен поиском этой информации на моем сервере.

В идеале, мне нужно сделать снимок, а затем загрузить его на свой сервер. Однако, я не могу получить какую-либо информацию из передачи файла?

Мой код JavaScript (размещение данных изображения):

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); } 

Код моей серверной части:

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

Я также пробовал:

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

Я также пробовал:

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

Все, что я получаю, это неопределенные переменные ошибки?

Любая помощь будет очень признательна, спасибо!

На http://some.server.com вы можете иметь свой каталог /var/www/ , в этом каталоге вам потребуется upload.php, а код в этом каталоге должен перемещать ваше изображение в папку

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

Это единственное, что вам нужно.

Необходимое условие:

XAMPP LAMP WAMP или MAMP на вашем http://some.server.com

Пожалуйста, примите / повысьте, если это поможет.

Для ясности это javascript и html, чтобы показать вам, как мой файл upload.php подходит: в голове

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

и это то, что я имею в своем теле

  <button onclick="getImage();">Upload a Photo</button> 

Еще одна вещь, которая часто упускается из виду: этот раздел в файле js клиента:

 options.fileKey="file"; 

Должна соответствовать этой части на стороне сервера:

 $_FILES["file"] 

В противном случае вы получите сообщение об ошибке, которое не указывает на этот факт. Это может показаться очевидным для некоторых, но это может спасти других через час или два от вытягивания волос.

Для доступа к значениям параметров обращайтесь к ним как к POST напрямую. Например, для

Серверная сторона: echo "Param Value1: " . $_POST['value1']; //will return "test" as output. echo "Param Value1: " . $_POST['value1']; //will return "test" as output.