AngularJS,管理二进制数据

时间:2014-03-11 16:58:41

标签: javascript angularjs escaping download binaryfiles

我想从服务Spring下载带有angularjs(1.0.8)的文件。我使用POST请求,因为我必须传递一段HTML作为参数,浏览器对查询字符串的长度有限制。这是我的代码:

    $http({
        method: 'POST',
        url: '/export/pdf',
        data: "html=" + graphHtml.outerHTML,
        headers: {'Content-Type': 'application/x-www-form-urlencoded'},
        transformResponse: function(data, headersGetter){
            return data;
        }
    }).success(function(data) {
        console.log("Type '" + typeof(data) + "'");
        var hiddenElement = document.createElement('a');
        hiddenElement.href = 'data:application/pdf,' + data;
        hiddenElement.target = '_blank';
        hiddenElement.download = 'myFile.pdf';
        hiddenElement.click();
    });

我注意到收到的“数据”已经是“字符串”格式!我看到很多(?)问题点,当输入

    typeof(data)

我收到“字符串”。我不希望这种原始数据的解释。当我尝试在文件中写入数据时,大小是双重原始文件!我知道它是用于二进制数据的“字符串解释”,而是希望读取为二进制数据。有没有人能够以原始格式看到“数据”而不是字符串?

2 个答案:

答案 0 :(得分:4)

在$ http配置对象中,指定

responseType : "blob"
以获取以二进制格式返回的响应数据。

否则,默认响应格式为String。有关responseType的其他选择,请参阅AngularJS API参考。

答案 1 :(得分:1)

在配置期间设置$ http responseType。并执行this

之类的操作