Загрузите файл PDF, используя путь https в javascript - PullRequest
0 голосов
/ 30 мая 2018

У меня есть ajax-вызов к контроллеру, который возвращает в успешном блоке путь к файлу pdf, который выглядит примерно так www. bts.abcd.com/ReportPdf/BH00118051710501_1_1.pdf, теперь я хочу написать некоторый код в javascript, который бы загружал этот файл.Я пробовал различные методы, такие как winodw.location.href="path", но это только открывает файл в новом окне, не загружая его.вот мой код.

`

$.ajax({
      type: "POST",
     url: "/Reporting/ReportAPI",
     data: '{PatientId:"BH0012"}',
    contentType: "application/json,utf=charset-8",
    datatype: "JSON",
     success: function (response) {
//response= www.bts.abcd.com/ReportPdf/BH00118051710501_1_1.pdf
//Code for downloading the file
                }
            });

` Также будут оценены различные методы для достижения того же результата.

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Одним из способов, которые уже упоминались, было бы добавление невидимого <iframe> и добавление URL в JS, но будут некоторые ошибки безопасности, которые будут появляться.


В моем методе ниже я использовал Axios.js, чтобы позволить мне безопасно загрузить файл, который также включает Promises.

Axios.JS CDN: <script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.js"></script>

JS


function DownloadFromUrl(url, mime) {
  axios({
    url: url,
    method: 'GET',
    responseType: 'blob', // important
  }).then((response) => {
    const url = window.URL.createObjectURL(new Blob([response.data]));
    const link = document.createElement('a');
    link.href = url;
    link.setAttribute('download', 'file.' + mime);
    document.body.appendChild(link);
    link.click();
  });
}

$.ajax({
  type: "POST",
  url: "/Reporting/ReportAPI",
  data: '{PatientId:"BH0012"}',
  contentType: "application/json,utf=charset-8",
  datatype: "JSON",
  success: function(response) {
    // Response = URL
    // Mime     = File Type - pdf, jpeg, png, bmp, exe, js...
    DownloadFromUrl(response, "pdf");
  }
});

Оберните параметр MIME в строку или измените приведенный выше код для проверкиMIME Type

Вот JSFiddle: https://jsfiddle.net/5mnethL1/2/

0 голосов
/ 30 мая 2018

"winodw.location.href" не может работать в блоке ajax.Вы можете создать элемент, а затем щелкнуть по нему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...