node.js 使用 multer 上传图片显示未定义
node.js to upload image using multer shows undefined
我在这里尝试从 2 个不同的文件输入上传文件,我可以将其上传到前端,但在后端它仍然存在 undefined
。尝试了几件事但没有奏效。
html:
<input type="file" name="file1" file-model = "file1"/>
<input type="file" name="file2" file-model = "file2"/>
<button ng-click = "uploadFile()">UPLOAD FILES</button>
指令:
angular.module('myApp').directive('fileModel', ['$parse',
function($parse) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
var model = $parse(attrs.fileModel);
var modelSetter = model.assign;
element.bind('change', function() {
scope.$apply(function() {
modelSetter(scope, element[0].files[0]);
});
});
}
};
}
])
服务:
angular.module('myApp').service('fileUpload', ['$http',
function($http) {
this.uploadFileToUrl = function(file, uploadUrl) {
var fd = new FormData();
fd.append('file1', file);
fd.append('file2', file);
$http.post(uploadUrl, fd, {
transformRequest: angular.identity,
headers: {
'Content-Type': undefined
}
})
}
}
]);
控制器:
angular.module('myApp')
.controller('ContactCtrl', ['$scope', 'fileUpload', '$http',
function($scope, fileUpload, $http) {
$scope.uploadFile = function() {
var file1 = $scope.file1;
var file2 = $scope.file2;
console.log('file is ');
console.dir(file1);
console.dir(file2);
var uploadUrl = '/upload';
fileUpload.uploadFileToUrl({
file1, file2
}, uploadUrl);
};
服务器:
function upload(req,res){
console.log(req.files.file1);
}
在nodejs的服务器端找不到文件的一种情况,即您可以在其中提供multerobject
/api/v1/uploadfile": [{
method: "POST",
action: controllers.advertController.videoUpload,
middleware: [multipartMiddleware],
views: {
json: views.jsonView
}
}],
global.multipartMiddleware = multipart();
在服务器端代码在请求的中间件处使用 multipartMiddleware。
Controller (in this you pass correct parameter to service)
var file ={}
file.file1=file1;
file.file2=file2;
fileUpload.uploadFileToUrl(file, uploadUrl);
Service (if you want to upload multiple file at a time use loop)
angular.module('myApp').service('fileUpload', ['$http', function ($http) {
this.uploadFileToUrl = function(file, uploadUrl){
var fd = new FormData();
fd.append('file1', file.file1);
fd.append('file2', file.file2);
$http.post(uploadUrl, fd, {
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
})
}
}]);
我在这里尝试从 2 个不同的文件输入上传文件,我可以将其上传到前端,但在后端它仍然存在 undefined
。尝试了几件事但没有奏效。
html:
<input type="file" name="file1" file-model = "file1"/>
<input type="file" name="file2" file-model = "file2"/>
<button ng-click = "uploadFile()">UPLOAD FILES</button>
指令:
angular.module('myApp').directive('fileModel', ['$parse',
function($parse) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
var model = $parse(attrs.fileModel);
var modelSetter = model.assign;
element.bind('change', function() {
scope.$apply(function() {
modelSetter(scope, element[0].files[0]);
});
});
}
};
}
])
服务:
angular.module('myApp').service('fileUpload', ['$http',
function($http) {
this.uploadFileToUrl = function(file, uploadUrl) {
var fd = new FormData();
fd.append('file1', file);
fd.append('file2', file);
$http.post(uploadUrl, fd, {
transformRequest: angular.identity,
headers: {
'Content-Type': undefined
}
})
}
}
]);
控制器:
angular.module('myApp')
.controller('ContactCtrl', ['$scope', 'fileUpload', '$http',
function($scope, fileUpload, $http) {
$scope.uploadFile = function() {
var file1 = $scope.file1;
var file2 = $scope.file2;
console.log('file is ');
console.dir(file1);
console.dir(file2);
var uploadUrl = '/upload';
fileUpload.uploadFileToUrl({
file1, file2
}, uploadUrl);
};
服务器:
function upload(req,res){
console.log(req.files.file1);
}
在nodejs的服务器端找不到文件的一种情况,即您可以在其中提供multerobject
/api/v1/uploadfile": [{
method: "POST",
action: controllers.advertController.videoUpload,
middleware: [multipartMiddleware],
views: {
json: views.jsonView
}
}],
global.multipartMiddleware = multipart();
在服务器端代码在请求的中间件处使用 multipartMiddleware。
Controller (in this you pass correct parameter to service)
var file ={}
file.file1=file1;
file.file2=file2;
fileUpload.uploadFileToUrl(file, uploadUrl);
Service (if you want to upload multiple file at a time use loop)
angular.module('myApp').service('fileUpload', ['$http', function ($http) {
this.uploadFileToUrl = function(file, uploadUrl){
var fd = new FormData();
fd.append('file1', file.file1);
fd.append('file2', file.file2);
$http.post(uploadUrl, fd, {
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
})
}
}]);