FilUpload с использованием AngularJS Cordova для Base64 / FileReader - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь загрузить base64 на мой сервер nodejs Изображение, которое я получил, получено от сборщика галерей Cordova, который возвращает мне данные в следующем формате.

{
exifRotate: 0
index: 0
mediaType: "image"
name: "Screenshot_20190702-023602.png"
path: "/storage/emulated/0/Pictures/Screenshots/Screenshot_20190702-023602.png"
quality: 100
size: 1033217
src: "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD"
thumbnailBase64: "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDABALDA4MChAODQ4SER"
 uri: "file:///storage/emulated/0/Pictures/Screenshots/Screenshot_20190702-023602.png"
 __proto__: Object
 }

Я использую $ http сервисы от AngularJS для отправки этого. Код, который я написал, выглядит следующим образом. Это сервис, который я написал в AngularJS

app.provider('restServices', [function() {

    var restConfig;
    return {

        config: function(config) {
            restConfig = config;
            log(restConfig);

        },
        $get: ['$http', function($http) {

            return {

              uploadPictures: function(pictures, cb) {
                  warn("Upload Pictures :");
                  log(pictures);
                  log(restConfig.uploadPictures);
                  $http({
                      method: 'POST',
                      headers: {
                          'Content-Type': 'application/json'
                      },
                      transformRequest: [function(pictures, headers) {
                          //just send data without modifying
                          return pictures;
                      }],
                      url: restConfig.uploadPictures, //Any URL
                      params: {pictures :pictures)

                  }).then(function(resp) {
                      cb(resp);
                  });

              }


            }
        }]

    }
}])

И я так называю

app.controller('dummyCtrl','restServices', ['$scope', function($scope,restServices) {


    $scope.dummyFile = function(file) {
        alert("sd")

        console.log(file);
        reader = new FileReader();
        reader.addEventListener("load", function() {
            result = reader.result;


            restServices.uploadPictures(result,function()
            {
                console.log("Uploaded");
            });

        }, false);

        reader.readAsDataURL(file);


    }

}])

В моем NODEJS

app.get("/post/save/images", function(req, resp) {
        //var images = req.body.images || req.query.images || req.param("images");;
        log("upload");

        var file = req.files.file,
            filePath = file.path,
            //        fileName = file.name, file name passed by client. Not used here. We use the name auto-generated by Node
            lastIndex = filePath.lastIndexOf("/"),
            tmpFileName = filePath.substr(lastIndex + 1),
            image = req.body,
            mobile = req.body.mobile;

        image.fileName = tmpFileName;
        log(tmpFileName);
        log(file);
        UserProfileModel.findOne({ mobile: req.body.mobile }, function(err, result) {
            if (err) {
                console.log(err);
                return next(err);
            }
            resp.json(image);
        });



    });

Я не могу загрузить какие-либо данные в бэкэнд. Есть 2 варианта, в которых я получаю изображения как Base64, и в одном случае мне нужно конвертировать их. В любом случае это не работает.

Я не использую тег ввода. я напрямую получаю результат в виде массива JSON

Буду признателен за любую помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...