Я пытаюсь загрузить 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
Буду признателен за любую помощь