当前位置: 首页 > 面试题库 >

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

邵劲
2023-03-14
问题内容

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
  }
})


 类似资料:
  • 在将配置单元外部表从RC格式升级为ORC格式并在其上运行MSCK修复表(当我确实从表中选择全部时)时,我得到以下错误- 将RC格式的历史数据迁移到ORC格式的新定义的过程是什么?

  • 我将multer添加到我的node js应用程序中,它工作得很好,只是我需要存储在db中的图像的路径不正确。找不到问题所在,显然是我犯了个愚蠢的错误。 这是我为multer做的准备 下面是我如何使用它来存储路径 你可以从这里看到路径不对,我不能在GET上使用它

  • 我试图通过使用飞碟(9.0.7)库从XHTML生成一个PDF文件。文本和表格按预期呈现,但图像(png)不会显示在最终的PDF中。图像由绝对文件路径引用(例如< code > 我的java代码如下: 任何帮助都将不胜感激。

  • 我正在工作一个简单的文件上传网站,一直有麻烦坚持上传文件没有错误。我现在拥有的代码在一个要上传的文件小于~20KB时可以完美地工作,但是对于大于这个值但小于~1MB的文件,只上传了大约~20KB的文件(从而破坏了文件)。 对于大于1MB的文件,上载完全失败并返回502错误。我已经确定要增加multer FileSize/FieldSize限制,并且永远不会收到文件太大的错误。 当一个在~20KB-

  • 下表所示为 CampusBuilder 中支持的文件导出格式。 序号 分类 格式 名称 说明 1 ThingJS .tjs ThingJS 场景包2020 由 ThingJS 场景文件和自定义模型组成。此格式的文件只能由 ThingJS 打开。 2 ThingJS .tjs ThingJS 场景包2019 由 ThingJS 场景文件和自定义模型组成。此格式的文件只能由 ThingJS 打开。 3

  • 本文向大家介绍Python实现把utf-8格式的文件转换成gbk格式的文件,包括了Python实现把utf-8格式的文件转换成gbk格式的文件的使用技巧和注意事项,需要的朋友参考一下 需求:将utf-8格式的文件转换成gbk格式的文件 实现代码如下: 代码讲解: 函数ReadFile的第二个参数指定以utf-8格式的编码方式读取文件,返回的结果content为Unicode然后,在将Unicode