Кордова - Вставить в базу данных веб-страницы

Я разрабатываю приложение с использованием Apache Cordova для Visual Studio. Цель этого приложения - сделать снимок с помощью телефона и загрузить это изображение вместе с некоторыми другими входными данными пользователя на веб-страницу нашей компании, которая использует базу данных SQL-сервера для хранения своих данных.

Итак, вопрос: как я могу вставить данные в эту базу данных, чтобы я мог показать их на веб-странице, учитывая, что приложение будет использоваться за пределами нашей сети? Так что это не может быть локальное подключение к нашей базе данных!


person Rafael Maria    schedule 23.02.2016    source источник


Ответы (2)


var pictureSource;
 var destinationType;
document.addEventListener("deviceready", onDeviceReady, false);

На устройстве готово

function onDeviceReady() {
    pictureSource = navigator.camera.PictureSourceType;
    destinationType = navigator.camera.DestinationType;
}

Очистить

function clearCache() {
    navigator.camera.cleanup();
}

var retries = 0;

Загрузить фото снятое с камеры

function onCapturePhoto(fileURI) {
document.getElementById('MyElement').innerHTML = 'Uploading....';
    var win = function (r) {
    clearCache();
    retries = 0;
    document.getElementById('MyElement').innerHTML = '';
    alert('Image Uploaded! Successfully');
};

var fail = function (error) {
    if (retries === 0) {
        retries++;
        setTimeout(function () {
            document.getElementById('MyElement').innerHTML = '';
            onCapturePhoto(fileURI);
        }, 1000);
    } else {
        retries = 0;
        clearCache();
        document.getElementById('MyElement').innerHTML = '';
        alert('Something went wrong..Try Again');
    }
};
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = fileURI.substr(fileURI.lastIndexOf('/') + 1);
options.mimeType = "image/jpeg";
options.params = {};
var ft = new FileTransfer();
ft.upload(fileURI, encodeURI("http://yourserver.com/phpfile.php"), win, fail, options);
}

   function onFail(message) {
    alert(message);
    }

Функция для вызова камеры

‹a href="#" onclick="capturePhoto();"›Сделать снимок‹/a›

   function capturePhoto() {
        navigator.camera.getPicture(onCapturePhoto, onFail, {
        quality: 100,
        destinationType: destinationType.FILE_URI,
        sourceType: Camera.PictureSourceType.CAMERA,
        encodingType: Camera.EncodingType.JPEG
    });
    }

Php-часть

             <?php
             $sourcePath = $_FILES['file']['tmp_name'];
             $targetPath = "images/".$_FILES['file']['name']; // save uploaded image to images folder
             move_uploaded_file($sourcePath,$targetPath) ;
             ?>
person Whebcraft    schedule 23.02.2016
comment
Спасибо за помощь. А где же загрузка в базу сайта? - person Rafael Maria; 24.02.2016
comment
Переменная $targetPath возвращает путь к изображению, поэтому вы сохраняете его в своей базе данных с помощью mysql. - person Whebcraft; 24.02.2016
comment
Фантастика! Он загружает на сервер, не хватает только загрузки в базу данных, но это я могу сделать. Спасибо, сэр! - person Rafael Maria; 26.02.2016
comment
Кстати, какие-нибудь подсказки о том, как преобразовать это изображение в оттенки серого? До или после загрузки на сервер. - person Rafael Maria; 26.02.2016
comment

Вам нужно будет настроить безопасный API, который имеет доступ к этой базе данных. Затем вы можете сделать http POST из своего приложения Cordova на конечную точку, которая сохранит изображение в базе данных. Вы можете использовать кодировку base64 для облегчения передачи данных изображения. Затем вы можете читать изображения из базы данных, как обычно!

Все, что вам нужно сделать на стороне Cordova, это отправить HTTP-запрос с данными вашего изображения на сервер API. Вы можете сделать это с помощью vanilla JS аля XMLHttpRequest или с плагином Cordova, подобным этому https://github.com/wymsee/cordova-HTTP.

На стороне сервера будет немного сложнее, так как вам нужно будет создать конечную точку API, которая сохраняет данные изображения на ваш сервер MS-SQL. Вы должны проверить это объяснение высокого уровня: https://technet.microsoft.com/en-us/library/aa258693(v=sql.80).aspx. Существуют также интерфейсы Node.js для серверов MS-SQL, если вам это нравится.

person MT_    schedule 23.02.2016
comment
Любые подсказки или учебные пособия о том, как это сделать? Имея в виду, что я новичок в разработке с Cordova - person Rafael Maria; 23.02.2016
comment
@RafaelMaria, я попытался дать вам небольшое представление о том, куда идти дальше (см. редактирование). Вам просто понадобится ваш API, чтобы выполнить оператор INSERT в вашей БД с изображением, переданным в качестве параметра почтовому запросу HTTP. - person MT_; 24.02.2016
comment
Спасибо за вашу помощь. Я прочитаю и постараюсь найти решение - person Rafael Maria; 24.02.2016