如何更改“ ng2-file-upload”默认行为,以将输入的文件的名称属性更改为“ file”

时间:2018-08-11 07:19:09

标签: javascript node.js angular multer ng2-file-upload

我正在尝试构建一个有角度的表单,在该表单中我将上传2张不同的照片。

我在nodejs上使用“ multer”,在角度上使用“ ng2-file-upload”。

每张照片我都需要一个唯一的标识符,以便能够正确处理它们。

multer 设置为可使用html name属性。 问题是 ng2-file-upload 默认情况下会将输入类型文件的属性 name 更改为字符串 file 。 >

当我尝试运行此代码时:

Node.js:

const upload = multer({
    storage
    }).fields([
       { name: 'posterPic'},
       { name: 'widePic'}
  ]);

角度:

<div class="form-group">
    <input type="file" id="posterPic" [name]="posterPic" ng2FileSelect [uploader]="uploader">
</div>
 <div class="form-group">
    <input type="file" id="widePic" [name]="widePic" ng2FileSelect [uploader]="uploader">
 </div>

上载时-'ng2-file-upload'将name="posterPic"name="widePic"更改为name="file"

错误:

{ [Error: Unexpected field]
  code: 'LIMIT_UNEXPECTED_FILE',
  field: 'file',
  storageErrors: [] }

任何人都知道如何更改 ng2-file-upload 的默认行为,以将输入的文件的name属性更改为“ file”吗?

非常感谢!

p.s

  

告诉multer接受any()对我没有帮助。我需要能够   识别这2个不同的输入。

1 个答案:

答案 0 :(得分:0)

碰到同样的问题,有一个简单的解决方法可以解决这个问题。

在上传文件之前,请更改FileItem别名属性,这将更改表单数据名称属性值。

例如,在您看来:

<input type="file" (onFileDrop)="startUpload()" ng2FileSelect [uploader]="uploader">

以及您的组件中

startUpload(){
    this.uploader.queue[0].alias = "posterPic"  // Or your file name
    this.uploader.queue[0].upload()
}

解决方案来自here