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

问题描述 投票:1回答:1

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

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

我需要为每张照片添加唯一标识符才能正确处理它们。

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

当我尝试运行此代码时:

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接受任何()不会帮助我。我需要能够识别这2个不同的输入。

javascript node.js angular multer ng2-file-upload
1个回答
0
投票

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

在上传文件之前,请更改FileItem别名属性,这将更改form-data name属性值。

例如,在您的视图中:

<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

© www.soinside.com 2019 - 2024. All rights reserved.