HTML-файл
<button mat-button (click) = "FileDownload">Download</button>
Ангулярный 4-компонентный метод
FileDownload()
{
this.filePath = "D:\SamplePDF.pdf";
document.loation.href = this.filePath;
}
Здесь я хочу загрузить локальный файл при нажатии кнопки. Я не могу скачать файл. Пожалуйста помоги.
PS: Я не могу получить доступ к window.open (), поскольку я использую приложение angular 4.
@john, я получаю эту ошибку в консоли: не разрешено загружать локальный ресурс
Тогда это невозможно из-за настроек безопасности вашего браузера. См. здесь



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


попробуй это
javascript:
window.open('file:///c://Documents/folder/file.ext', 'Download');
html:
<a href = "file:///C://Documents/folder/file.ext">Download Me</a>
Я не могу получить доступ к window.open. Я использую приложение Angular 4. Любая идея?
Не могли бы вы попробовать что-то вроде этого:
/**
* Method is use to download file.
* @param data - Array Buffer data
* @param type - type of the document.
*/
downLoadFile(data: any, type: string) {
var blob = new Blob([data], { type: type.toString() });
var url = window.URL.createObjectURL(blob);
window.open(url);
}
Что такое Blob? Нужно ли нам устанавливать какой-либо пакет?
пожалуйста, обратитесь к этому -> developer.mozilla.org/en-US/docs/Web/API/Blob
Спасибо, а как преобразовать файл в данные?
независимо от того, какой файл / данные и тип файла вы просто передали в 'downLoadFile (data: any, type: string)'.
Вы можете попробовать этот фрагмент
function downloadFunc(){
var anchor=document.createElement('a');
anchor.setAttribute('href','D:/SamplePDF.pdf');
anchor.setAttribute('download','');
document.body.appendChild(anchor);
anchor.click();
anchor.parentNode.removeChild(anchor);
}Я использовал ваш код, но получаю ту же ошибку в консоли: не разрешено загружать локальный ресурс.
кстати, я пробовал другой подход, используя gist.github.com/liabru/11263260
«Не разрешено загружать локальный ресурс» Локальный файл и сервер отличаются от времени, когда возникает эта проблема. В противном случае вы должны попробовать преобразовать локальный файл в данные blob, а затем установить элемент привязки, это может помочь.
¿Вы используете ngnix или apache? Вы можете принудительно загрузить с помощью ngnix или apache, отправив контент как «вложение» (используя заголовок «Content-Disposition»).
Это образец конфигурации для этого с Nginx:
server {
listen 80;
server_name my.domain.com;
location ~ ^.*/(?P<request_basename>[^/]+\.(pdf))$ {
root /path/to/pdf/
add_header Content-Disposition 'attachment; filename = "$request_basename"';
}
}
Вы можете просто так поступить.
<a href = "your_link" download> file_name </a>
Используйте тег вместо кнопки и реализуйте там стиль кнопки материала.
И используйте атрибут download для реализации действия загрузки.
file:///d:/SamplePDF.pdf?