我正在使用mean.io stack ng-file-upload
有谁知道为什么没有触发事件?
客户
controller('ArticleParentCtrl', ['$scope', '$timeout', '$upload', function ($scope, $timeout, $upload) {
$scope.article = {};
function setPreview(fileReader, index) {
fileReader.onload = function(e) {
$timeout(function() {
$scope.dataUrls[index] = e.target.result;
});
};
}
$scope.fileReaderSupported = window.FileReader !== null;
$scope.uploadRightAway = true;
$scope.hasuploader = function(index) {
return (typeof $scope.upload[index] !== 'undefined');
};
$scope.abort = function(index) {
$scope.upload[index].abort();
$scope.upload[index] = null;
};
$scope.onFileSelect = function($files) {
$scope.selectedFiles = [];
$scope.progress = [];
if ($scope.upload && $scope.upload.length > 0) {
for (var i = 0; i < $scope.upload.length; i++) {
if ($scope.upload[i] !== null) {
$scope.upload[i].abort();
}
}
}
$scope.upload = [];
$scope.uploadResult = [];
$scope.selectedFiles = $files;
$scope.dataUrls = [];
for (var y = 0; y < $files.length; y++) {
var $file = $files[y];
var isImage = /\.(jpeg|jpg|gif|png)$/i.test($file.name);
if(!isImage){
alert('Only images are allowed');
return;
}
if (window.FileReader && $file.type.indexOf('image') > -1) {
var fileReader = new FileReader();
fileReader.readAsDataURL($files[y]);
setPreview(fileReader, y);
}
$scope.progress[y] = -1;
if ($scope.uploadRightAway) {
$scope.start(y);
}
}
};
$scope.start = function(index) {
$scope.progress[index] = 0;
$scope.upload[index] = $upload.upload({
url :'/articles/api/upload',
method: 'POST',
headers: {
'x-ng-file-upload': 'lalista'
},
data : $scope.media,
file: $scope.selectedFiles[index],
fileFormDataname: 'avatar'
})
.then(
function(response) {
$scope.uploadResult.push(response.data);
$timeout(function() {
$scope.article.avatar = response.data.avatar;
});
},
null,
function(evt) {
$scope.progress[index] = parseInt(100.0 * evt.loaded / evt.total);
})
.xhr(function(xhr){
xhr.upload.addEventListener('abort', function(){
console.log('aborted complete');
},
false);
});
};
}])
服务器
exports.upload = function(req, res) {
var busboy = new Busboy({ headers: req.headers });
busboy.on('error', function(err){
console.log(err);
});
busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
console.log('fieldname');
console.log(fieldname);
console.log('file');
console.log(file);
console.log('filename');
console.log(filename);
console.log('encoding');
console.log(encoding);
console.log('mimetype');
console.log(mimetype);
//var saveto = path.join(os.tmpDir(), path.basename(fieldname));
//file.pipe(fs.createWriteStream(saveto));
});
busboy.on('finish', function() {
console.log('finish');
});
};
如果我使用强大的像:
var form = new formidable.IncomingForm;
form.parse(req, function(err, fields, files){
console.log(files);
});
代码工作正常
但是我想知道地球上的男人不能工作:(
解决方法:
你没有把你的请求发送到busboy.你需要做req.pipe(busboy);.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。