Скачать локальный файл

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.

file:///d:/SamplePDF.pdf?
Llama 01.08.2018 07:15

@john, я получаю эту ошибку в консоли: не разрешено загружать локальный ресурс

Billy 01.08.2018 07:25

Тогда это невозможно из-за настроек безопасности вашего браузера. См. здесь

Llama 01.08.2018 07:26
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
5
3
9 072
5

Ответы 5

попробуй это

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. Любая идея?

Billy 01.08.2018 07:33

Не могли бы вы попробовать что-то вроде этого:

/**
 * 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? Нужно ли нам устанавливать какой-либо пакет?

Billy 01.08.2018 07:52

пожалуйста, обратитесь к этому -> developer.mozilla.org/en-US/docs/Web/API/Blob

Akj 01.08.2018 07:56

Спасибо, а как преобразовать файл в данные?

Billy 01.08.2018 08:12

независимо от того, какой файл / данные и тип файла вы просто передали в 'downLoadFile (data: any, type: string)'.

Akj 01.08.2018 08:15

Вы можете попробовать этот фрагмент

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

Я использовал ваш код, но получаю ту же ошибку в консоли: не разрешено загружать локальный ресурс.

Billy 01.08.2018 10:34

кстати, я пробовал другой подход, используя gist.github.com/liabru/11263260

Billy 01.08.2018 19:54

«Не разрешено загружать локальный ресурс» Локальный файл и сервер отличаются от времени, когда возникает эта проблема. В противном случае вы должны попробовать преобразовать локальный файл в данные blob, а затем установить элемент привязки, это может помочь.

Patharraj 03.08.2018 07:57

¿Вы используете 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 для реализации действия загрузки.

Другие вопросы по теме