Multer不接受数组格式的文件会出现“意外的文件错误”

Multer是与节点js一起使用的模块,用于表示上传文件。我在角端使用ng-file上传模块。

当我一一发送多个文件时,它工作正常,没有任何错误,但是当我以数组格式一次发送所有文件时,然后我按照Multer的github的建议在服务器端进行必要的更改,仍然会出现错误。

这是错误

Error: Unexpected field

at makeError (C:\nodefiles\new\node_modules\multer\lib\make-error.js:12:13)

at wrappedFileFilter (C:\nodefiles\new\node_modules\multer\index.js:39:19)

at Busboy.<anonymous> (C:\nodefiles\new\node_modules\multer\lib\make-middleware.js:109:7)

at Busboy.emit (events.js:118:17)

at Busboy.emit (C:\nodefiles\new\node_modules\multer\node_modules\busboy\lib\main.js:31:35)

at PartStream.<anonymous> (C:\nodefiles\new\node_modules\multer\node_modules\busboy\lib\types\multipart.js:209:13)

at PartStream.emit (events.js:107:17)

at HeaderParser.<anonymous> (C:\nodefiles\new\node_modules\multer\node_modules\busboy\node_modules\dicer\lib\Dicer.js:51:16)

at HeaderParser.emit (events.js:107:17)

at HeaderParser._finish (C:\nodefiles\new\node_modules\multer\node_modules\busboy\node_modules\dicer\lib\HeaderParser.js:70:8)

at SBMH.<anonymous> (C:\nodefiles\new\node_modules\multer\node_modules\busboy\node_modules\dicer\lib\HeaderParser.js:42:12)

at SBMH.emit (events.js:118:17)

at SBMH._sbmh_feed (C:\nodefiles\new\node_modules\multer\node_modules\busboy\node_modules\dicer\node_modules\streamsearch\lib\sbmh.js:159:14)

at SBMH.push (C:\nodefiles\new\node_modules\multer\node_modules\busboy\node_modules\dicer\node_modules\streamsearch\lib\sbmh.js:56:14)

at HeaderParser.push (C:\nodefiles\new\node_modules\multer\node_modules\busboy\node_modules\dicer\lib\HeaderParser.js:48:19)

at Dicer._oninfo (C:\nodefiles\new\node_modules\multer\node_modules\busboy\node_modules\dicer\lib\Dicer.js:198:25)

样例控制器代码

var app = angular.module('fileUpload', ['ngFileUpload']);

app.controller('MyCtrl', ['$scope', 'Upload', '$timeout', function ($scope, Upload, $timeout) {

$scope.uploadFiles = function (files) {

$scope.files = files;

if (files && files.length) {

console.log(files);

Upload.upload({

url: '/api/data/addtweet',

data: {

files: files

}

}).then(function (response) {

$timeout(function () {

$scope.result = response.data;

});

}, function (response) {

if (response.status > 0) {

$scope.errorMsg = response.status + ': ' + response.data;

}

}, function (evt) {

$scope.progress =

Math.min(100, parseInt(100.0 * evt.loaded / evt.total));

});

}

};

}]);

请告诉我我在做什么错。谷歌搜索不是那么有用,我已经尝试过了,为什么我要在这里发布。

回答:

究其原因,错误的是,multer目前不支持数组语法,ng-file-

upload在默认情况下是使用files[0]files[1]files[2]multer期待了一系列的文件 相同的字段名称

最简单的解决方案是像这样设置ng-file-uploadarrayKey选项,以避免附加[index]零件:

Upload.upload({

url: '/api/data/addtweet',

arrayKey: '', // default is '[i]'

data: {

files: files

}

})

以上是 Multer不接受数组格式的文件会出现“意外的文件错误” 的全部内容, 来源链接: utcz.com/qa/418607.html

回到顶部