Не удается загрузить изображение на сервер Linux через PhoneGap и PHP - PullRequest
0 голосов
/ 28 августа 2018

Я создаю приложение в PhoneGap , которое требует загрузки изображения на сервер Linux. Я настроил тест CentOS 7 VM , установил и настроил на нем стек LEMP , а затем создал скрипт php с именем upload.php (ниже). Этот сценарий был извлечен из Интернета из нескольких различных учебных пособий, и я просто отредактировал путь, чтобы сохранить файл в нужном месте.

Затем я создал свой код javascript для загрузки его на сервер, но он не работал, поэтому я просто взял код из онлайнового учебного пособия только для целей тестирования, чтобы проверить, работает ли он должным образом (также ниже). Я получаю предупреждение о том, что оно работает, но изображение не загружается, поэтому я попытался отключить брандмауэр, но все равно не повезло.

Я не уверен, что это настройка сервера, javascript, php или просто мой провайдер. Любая помощь очень ценится.

Я использую плагины Cordova: Камера

Файл

Передача файлов


PHP:

<?php $new_image_name = urldecode($_FILES["file"]["name"]).".jpg"; move_uploaded_file($_FILES["file"]["tmp_name"], "/upload/".$new_image_name); ?>

Javascript:

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";
 console.log(options.fileName);
 var params = new Object();
 params.value1 = "test";
 params.value2 = "param";
 options.params = params;
 options.chunkedMode = false;

var ft = new FileTransfer();
 ft.upload(imageURI, "http://192.168.1.11/upload.php", function(result){
 alert(JSON.stringify(result));
alert('works');
 }, function(error){
 console.log(JSON.stringify(error));
alert('doesnt');
 }, options);
 }

1 Ответ

0 голосов
/ 30 августа 2018

Было несколько проблем, которые нужно было преодолеть. Все из которых были довольно просты.

Я использовал абсолютный путь, но php интерпретировал его как относительный путь, поэтому я просто изменил путь.

Каталог также принадлежал пользователю root, поэтому я исправил это, используя chown nginx:nginx uploads

Брандмауэр блокировал доступ с моего телефона, поэтому я отключил брандмауэр, но все равно нужно найти лучшее решение. Я уверен, что это довольно просто, но я еще не дошел до этого.

...