Nativescript imagepicker .getImage () не является ошибкой функции - PullRequest
0 голосов
/ 01 июня 2018

Я пытался реализовать ответ на этот вопрос , но постоянно получаю сообщение об ошибке "selected.getImage is not function".

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

Я ищу, чтобы выбрать одно изображение и вернуть путь к этому изображению для загрузки на сервер.Мне не нужно отображать его на устройстве, хотя это вариант, я полагаю.Кажется, достаточно просто, но, видимо, я что-то упускаю.

Я использую v. 6.0.1 или плагин imagepicker.Я бы процитировал код, но сейчас я использую точный пример, предоставленный Шивой Прасадом в приведенном выше вопросе.

Добавление кода для Макса Фольмера:

var context = imagepickerModule.create({
    mode: "single" // allow choosing single image
});
context
    .authorize()
    .then(function () {
        return context.present();
    })
    .then(function (selection) {
        console.log("Selection done:");
        setTimeout(() => {
            selection.forEach(function (selected) {
                selected.getImage().then((source) => {
                    console.log(selected.fileUri); // this is the uri you need
                });     
            });
        }, 1000);            
    }).catch(function (e) {
        console.log(e);
    });

1 Ответ

0 голосов
/ 13 октября 2018

Вчера я столкнулся с точно такой же ошибкой.

Я использую функцию fromAsset непосредственно для «selected», потому что, очевидно, в новой версии этого плагина «selected» является активом.Таким образом, вы получили imageSource и можете использовать функцию «saveToFile», которая будет копировать актив в новое местоположение (получить это местоположение с помощью fileSystemModule из TNS).Используйте путь этого нового местоположения для вашего пользовательского интерфейса, и изображение появится.Вы также можете создать файловый объект из этого местоположения fileSystemModule.File.fromPath(path);, я использую для загрузки.

context
            .authorize()
            .then(function () {
                return context.present();
            })
            .then(function (selection) {
                selection.forEach(function (selected) {

                    let file;

                    if (selected._android) {

                        file = fileSystemModule.File.fromPath(selected._android);
                        //viewModel.uploadFile(file);

                    }else{

                        imageSourceModule.fromAsset(selected).then((imageSource) => {

                        const folder = fileSystemModule.knownFolders.documents().path;
                        const fileName = "Photo.png"; 
                        const path = fileSystemModule.path.join(folder, fileName);
                        const saved = imageSource.saveToFile(path, "png");

                        if (saved) {
                            console.log("Image saved successfully!");
                            file = fileSystemModule.File.fromPath(path);
                            //viewModel.uploadFile(file);
                        }else{
                            console.log("Error! - image couldnt save.");
                        }
                    });
                }
            });
            }).catch(function (e) {
                console.log(e);
                // process error
            });

Объяснение

Фрагмент без комментария (//viewModel.uploadFile(file);),viewModel ссылка (будет отличаться в вашем приложении) и функция: uploadFile Например, вы должны передать файл для загрузки или установить его на image.src и т. Д.

Обязательно объявитеimageSourceModule вверху.

const imageSourceModule = require("tns-core-modules/image-source");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...