Как я могу изменить поведение по умолчанию 'ng2-file-upload', чтобы изменить атрибут имени входного файла на 'file'

Я пытаюсь построить угловую форму, в которой я загружу 2 разные фотографии.

Я использую 'multer' на nodejs и 'ng2-file-upload 'в angular.

Мне нужен уникальный идентификатор для каждой фотографии, чтобы правильно с ними обращаться.

multer настроен на работу с атрибутом имени html. Проблема в том, что 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, чтобы изменить атрибут имени входного файла на 'file'?

Большое спасибо!

p.s

Сказать Multer принять any () мне не поможет. мне нужно иметь возможность идентифицировать эти 2 разных входа.


person codingnighter2000    schedule 11.08.2018    source источник


Ответы (1)


Просто столкнулся с той же проблемой, и есть простой способ ее решения.

Непосредственно перед загрузкой файла измените атрибут псевдонима 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()
}

Решение взято из здесь.

person velval    schedule 29.04.2019