Как сделать loa-файл из safeUrlImpl в angular?

#angular #angular-material

#angular #angular-материал

Вопрос:

Здравствуйте, я не могу загрузить файл из приведенного выше кода в файле ts. Я также хочу знать, что означает bypasssecurity при очистке файла. Если возможно, кто-нибудь может сказать мне, как загрузить любой файл, кроме файла jpg / png в angular.

Вот то, что я кодировал раньше.

 if(this.nonImageFileList.length>0){
      for(let i =0 ;i<this.nonImageFileList.length;i  ){
        console.log(this.nonImageFileList[i])
        const downloadedFile = new Blob([this.nonImageFileList[i].data]);
            const a = document.createElement('a');
            a.setAttribute('style', 'display:none;');
            document.body.appendChild(a); 
            a.download = this.nonImageFileList.fileName;
            a.setAttribute('download',this.nonImageFileList.fileName);
            a.href = URL.createObjectURL(downloadedFile);
            a.target = '_blank';
            a.click();
            document.body.removeChild(a);
      }
    }
  }
 

Вот снимок экрана журнала консоли.
Почему safeUrlImppl получает добавление при нажатии на загрузку, в которую он записывается undefined.txt формат

Комментарии:

1. в каком браузере вы это делаете?

Ответ №1:

Ваша работа очень близка. Вы правильно указали URL.createObjectURL() ссылку на href, но не на атрибут загрузки. Присвоение имени файла не работает, потому что браузер ожидает URL-адрес для загрузки, даже если он был создан локально.

Кроме того, нет необходимости назначать для обоих a.download и a.setAttribute('download') , это излишне.

Рабочая версия вашего кода будет выглядеть следующим образом:

 if(this.nonImageFileList.length > 0) {
  for(let i = 0; i < this.nonImageFileList.length; i  ) {
    // Create a URL from the file
    const url = URL.createObjectURL(new Blob([this.nonImageFileList[i].data]);

    const a = document.createElement('a');
    a.setAttribute('style', 'display:none;');
    document.body.appendChild(a); 

    // Assign the URL to the href and download attributes
    a.download = url;
    a.href = url;

    a.target = '_blank';
    a.click();
    document.body.removeChild(a);
  }
}