javascript - AngularJS,管理二进制数据

标签 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)

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

最佳答案

在 $http 配置对象中,指定

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

否则,默认响应格式为字符串。有关 responseType 的其他选择,请参阅 AngularJS API 引用。

关于javascript - AngularJS,管理二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22331484/

相关文章:

javascript - 在指令定义中的其他指令内添加指令

javascript - 如何在angularjs中进行分页和过滤

php - 使用单引号时在 PHP 中创建制表符和换行符的正确方法是什么?

terminal - 通过 ANSI 转义序列或 X11 转义序列禁用回显并设置原始终端模式

javascript - 什么是 - function Empty() - 在 javascript 中?

javascript - 这段代码在 Javascript 中是什么设计模式?

javascript - 调整简单 slider

javascript - 如何检查 JQuery 中是否存在某个元素?

javascript - 以 Angular 从对象中获取值

powershell - PSExec 和 Powershell 无法运行位于 Program Files (x86) 中的程序