上传文件与AngularJS和Express.js
我正在尝试使用AngularJS和Node.js(使用Express.js)来上传文件。 我正在使用danialfarid /angular度file upload 。 在我看来(我用玉)我有
label Upload avatar input(type="file" ng-file-select='uploadAvatar($files)' accept="image/png, image/jpeg") span(ng-show='uploadInProgress') Upload progress: {{ uploadProgress }} img(ng-src='uploadedAvatar' ng-if='uploadedAvatar')
这里是我的控制器中的uploadAvatar
函数(我在前端使用CoffeeScript, 这里是编译的javascript版本):
$scope.uploadAvatar = (image) -> if angular.isArray image image = image[0] if image.type isnt 'image/png' and image.type isnt 'image/jpeg' alert('Only PNG and JPEG are supported') return $scope.uploadInProgress = true $scope.uploadProgress = 0 $scope.upload = $upload.upload({ url: '/api/users/avatar', method: 'POST', file: image }).progress( (event) -> $scope.uploadProgress = Math.floor(event.loaded / event.total) $scope.$apply() ).success( (data, status, headers, config) -> $scope.uploadInProgress = false $scope.uploadedAvatar = JSON.parse(data) ).error( (err) -> $scope.uploadInProgress = false alert "error" console.log "error: #{err.message || err}" )
这是我的路线:
app.post('/api/users/avatar', middleware.auth, users.uploadAvatar);
问题是,在我的users.uploadAvatar
控制器我无法访问该文件:
exports.uploadAvatar = function(req, res, next) { var currentUser = req.user; console.log(req.files); // Output is undefined // Some other code }
你忘了使用bodyParser,但现在它不处理multipart,所以你必须使用multiparty
和它的小弟connect-multiparty
。 使用快递4.x或3.x:
var multipart = require('connect-multiparty'); app.post('/api/users/avatar', middleware.auth, multipart(), users.uploadAvatar);
- AngularJS路由问题的url不好
- 在AngularJS和数据库之间保持唯一标识符同步的最佳方法是什么?
- Angular 2 / webpack“未捕获的ReferenceError:require没有定义”
- 无法使用MEAN堆栈显示图像
- 如何禁用moment.js日光时区转换
- http从angularangular色向node.js服务器发送密码
- 如何使用angular度file upload和nodejs发布文件内容到服务器?
- AngularJS:http链调用和NodeJS的问题:在多个http调用中使用variables的问题
- AngularJS的$ routeProvider templateUrl总是使用Express返回404