Javascript blob窗口打开浏览器弹出窗口

时间:2017-03-01 06:14:44

标签: javascript angularjs

我在使用angularjs $http提供商的javascript代码中进行了下载操作。

$http({
    method: "POST",
    url: "http://localhost:28494/api/print",
    data: data,
    responseType:'arraybuffer'
}).then(
    function (response) {

        var file = new Blob([response.data], {type: 'application/pdf'});

        var objectUrl = URL.createObjectURL(file);

        window.open(objectUrl,'_blank');         
    }
);

这会触发我的浏览器弹出窗口。我不想这样。

enter image description here

但我想直接下载。不要显示弹出窗口。

2 个答案:

答案 0 :(得分:2)

您应该使用window.location.assign(objectUrl);。这会强制窗口打开并显示URL。在您的情况下,它将下载文件。

答案 1 :(得分:0)

尝试这种替代方法。

window.location = item.objectUrl;

这将导致浏览器从服务器请求资源,服务器的响应必须包含Content-Disposition:attachment;。它将使浏览器显示下载对话框。

P.S。如果要强制浏览器显示某个文件(资源)的下载提示,则必须在响应中包含Content-Disposition:attachment;