#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);
}
}