i tried multer but i donāt know something not right , i am posting my code can you please check.
var express = require('express');
var http = require('http');
var multer = require('multer');
var bodyParser = require('body-parser');
var multerS3 = require('multer-s3');
var aws = require('aws-sdk');
var app = express();
app.use(bodyParser.json({
limit: '50mb'
}));
app.use(bodyParser.urlencoded({
limit: '50mb',
extended: true
}));
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
next();
});
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, './uploads');
console.log('hit storage');
},
filename: function (req, file, callback) {
callback(null, file.fieldname + '-' + Date.now());
console.log('hit storage');
}
});
var upload = multer({
storage: storage
}).single('userPhoto');
app.post('/upload2', function (req, res) {
console.log('hit post');
upload(req, res, function (err) {
if (err) {
console.log(err);
//console.log(req);
return res.end("Error uploading file.");
} else {
console.log('done');
res.end("File is uploaded");
}
});
});
you can simply copy and paste the above code in server.js and test . and by the my ionic code is given below
angular.module('starter.controllers', ['ngCordova'])
.controller('DashCtrl', function ($scope, $cordovaCamera, $cordovaFileTransfer, $http) {
$scope.takePic = function () {
var options = {
quality: 50,
destinationType: Camera.DestinationType.FILE_URI,
sourceType: 0, // 0:Photo Library, 1=Camera, 2=Saved Photo Album
encodingType: 1 // 0=JPG 1=PNG
}
navigator.camera.getPicture(onSuccess, onFail, options);
}
var onSuccess = function (FILE_URI) {
//console.log(FILE_URI);
$scope.picData = FILE_URI;
//$scope.picData = LZString.compressToUTF16(FILE_URI)
$scope.$apply();
};
var onFail = function (e) {
console.log("On fail " + e);
}
$scope.send = function () {
var options = {
fileName: $scope.picData.substr($scope.picData.lastIndexOf('/') + 1),
chunkedMode: false,
mimeType: "image/png"
};
console.log($scope.picData);
$cordovaFileTransfer.upload('http://localhost:8001/upload2', $scope.picData, options).then(function (result) {
console.log("SUCCESS: " + JSON.stringify(result.response));
},
function (err) {
console.log("ERROR: " + JSON.stringify(err));
},
function (progress) {
console.log(progress);
});
}
})
the above code is complete controller code , so you dont have to worry about , can you please help me with this .
and the error i get is this
{ [Error: Unexpected field]
code: 'LIMIT_UNEXPECTED_FILE',
field: 'file',
storageErrors: [] }
FYI: i use chrome inspect device feature to run the localhost in my android .
(chrome://inspect/#devices).
another thing, why i am getting image url like this
> ācontent://com.android.providers.media.documents/document/image%3A42ā
formate missing , does it make any sense ?