Как правильно изменить имя файла для ng2-file-uploader в угловых - PullRequest
0 голосов
/ 03 октября 2019

Я хочу изменить имя своего изображения на угловое через ng2-file-uploader, а затем передать его своему мультеру в моем node.js.

Все работает нормально. Я могу получить изображение, и оно хранится в моем каталоге загрузки на стороне сервера. Просто я не знаю, где изменить имя изображения. Я попробовал это в методе onCompleteItem, но ничего. Вот некоторый код:

import {  FileUploader, FileSelectDirective } from 'ng2-file-upload/ng2-file-upload';

@Component({
  selector: 'name',
  templateUrl: './some.html',
  styleUrls: [./some.css]
})
export class ComponentName {
  public uploader: FileUploader = new FileUploader({ url: "myurl", itemAlias: 'myPhoto' });

  ngOnInit(){
    this.uploader.onAfterAddingFile = (file) => {};
    this.uploader.onCompleteItem = (item: any, response: any, status: any, headers: any) => {
      //create my name
      item.file.name = "my name"
      alert('File uploaded');
    }; 
    this.uploader.uploadAll();
  }
}

Я просто хочу изменить имя, чтобы я мог сохранить его в своей базе данных вместе с другими входными значениями, которые у меня есть.

Ответы [ 2 ]

2 голосов
/ 03 октября 2019

Вы можете использовать onAfterAddingAll в качестве обходного пути:

 this.uploader.onAfterAddingAll = (files: FileItem[]) => {
        files.forEach(fileItem => {
            fileItem.file.name = fileItem.file.name.replace(/\.[^/.]+$/, "");
            (<any>fileItem).previewUrl = this.sanitizer.bypassSecurityTrustUrl((window.URL.createObjectURL(fileItem._file)));
        });
    };
1 голос
/ 03 октября 2019

Это на самом деле довольно просто. Вы почти получили это, но вы выбрали неправильный метод. Вы можете изменить имя файла в методе onAfterAddingFile. Ниже я могу показать вам некоторый код

import {  FileUploader, FileSelectDirective } from 'ng2-file-upload/ng2-file-upload';

@Component({
  selector: 'name',
  templateUrl: './some.html',
  styleUrls: [./some.css]
})
export class ComponentName {
  public uploader: FileUploader = new FileUploader({ url: "myurl", itemAlias: 'myPhoto' });

  //new name string variable
  newFileName : string;

  ngOnInit(){
    this.uploader.onAfterAddingFile = (file) => {
      //create my name
      file.file.name = "new name";
      //save in variable
      newFileName = file.file.name;
    };
    this.uploader.onCompleteItem = (item: any, response: any, status: any, headers: any) => {
      alert('File uploaded');
    }; 
    this.uploader.uploadAll();
  }
}

Таким образом, вы можете передать полное новое имя файла или использовать метод замены строки javascript и регулярное выражение для замены символов в имени вашего файла. Надеюсь, это помогло.

...