在javascript中使用https路径下载pdf文件

在javascript中使用https路径下载pdf文件,javascript,jquery,pdf,download,Javascript,Jquery,Pdf,Download,我对控制器进行了一个ajax调用,该调用在成功块中作为pdf文件的路径返回,该文件类似于www.bts.abcd.com/ReportPdf/BH00118051710501_1_1.pdf,现在我想用javascript编写一些代码来下载该文件。 我尝试过各种方法,如winodw.location.href=“path”,但这只会在新窗口中打开文件,而不会下载它。 这是我的密码 ` ` 实现相同结果的不同方法也值得赞赏。“winodw.location.href”不能在ajax块中工作。您可以

我对控制器进行了一个ajax调用,该调用在成功块中作为pdf文件的路径返回,该文件类似于
www.bts.abcd.com/ReportPdf/BH00118051710501_1_1.pdf
,现在我想用javascript编写一些代码来下载该文件。 我尝试过各种方法,如
winodw.location.href=“path”
,但这只会在新窗口中打开文件,而不会下载它。 这是我的密码

`

`
实现相同结果的不同方法也值得赞赏。

“winodw.location.href”不能在ajax块中工作。您可以创建一个元素,然后单击它。

“winodw.location.href”无法在ajax块中工作。您可以创建一个元素,然后单击此按钮。

前面提到的方法之一是在JS中附加一个不可见的
和一个
URL
,但是会出现一些安全错误。
在我下面的方法中,我使用了
Axios.js
来安全地下载该文件,其中还包括
Promises


Axios.JS CDN:

JS



确保将
MIME
参数包装为字符串,或更改上面的代码以验证
MIME类型


这里是JSFIDLE:

前面提到的方法之一是在JS中附加一个不可见的
和一个
URL
,但是会出现一些安全错误。
在我下面的方法中,我使用了
Axios.js
来安全地下载该文件,其中还包括
Promises


Axios.JS CDN:

JS



确保将
MIME
参数包装为字符串,或更改上面的代码以验证
MIME类型


这里是JSFiddle:

您可以强制下载文件,而不是通过
.htaccess
文件显示。感谢您的回复,是的,我只想从其路径下载文件。如何强制下载该文件,我认为工作代码很好。通过将此行(
AddType application/octet stream.pdf
)添加到
.htaccess
文件中,您可以强制下载pdf文件而不是显示。你知道如何编辑
.htaccess
文件吗?@kavian-k,不知道
.htaccess
到底是什么?你能不能给我分享一些关于这个或任何链接的工作代码,以进一步了解这种方法如何解决这个问题。谢谢。请参见:您可以强制下载文件,而不是通过
.htaccess
文件显示。感谢您的回复,是的,我只想从文件路径下载文件。如何强制下载该文件,我认为工作代码很好。通过将此行(
AddType application/octet stream.pdf
)添加到
.htaccess
文件中,您可以强制下载pdf文件而不是显示。你知道如何编辑
.htaccess
文件吗?@kavian-k,不知道
.htaccess
到底是什么?你能不能给我分享一些关于这个或任何链接的工作代码,以进一步了解这种方法如何解决这个问题。谢谢。看这个:谢谢。这对我有用。很好地解释和演示:)@Vinod没问题!希望您将来会发现这段代码更易于重用,这只是一个快速的模型。谢谢。这对我有用。很好地解释和演示:)@Vinod没问题!希望您将来会发现这段代码更易于重用,这只是一个快速的模型。
$.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
                }
            });
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");
  }
});