Angularjs:创建一个用于下载不同类型文件的链接

时间:2014-12-31 08:56:37

标签: angularjs download base64

美好的一天!

我无法解决我的问题 - 创建下载附件的链接。 我在xml中从SOAP服务接收的文件,因此我必须创建一个下载文件的链接。

我现在拥有的:

在控制器中:

//creating comments
for (var index in $scope.comments){
                    var com = $scope.comments[index]
                    if (com.z2AF_Work_Log01_attachmentName !== undefined){
                      var a         = document.createElement('a');
                      a.target      = '_blank';
                      a.download    = com.z2AF_Work_Log01_attachmentName;
                      a.innerText   = com.z2AF_Work_Log01_attachmentName;

                      var blob = new Blob([ atob(com.z2AF_Work_Log01_attachmentData) ], 
                        { type : 'zip' });
                      //com.href  = (window.URL || window.webkitURL).createObjectURL( blob );
                      a.href = (window.URL || window.webkitURL).createObjectURL( blob );;
                      com.attachment_link = a.outerHTML;

                    }
                  }

已创建链接,但如果我没有纯文本(csv),则下载后的文件将被破坏。当我下载csv - 一切都很好。

在模板中:

.attach ng-bind-html="comment.attachment_link | notSanit"

1 个答案:

答案 0 :(得分:0)

经过3天的研究,我找到了解决方案:



var decodeString = unescape(atob(attchment_data));
var ab = new ArrayBuffer(decodeString.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < decodeString.length; i++) {
  ia[i] = decodeString.charCodeAt(i);
}

var blob = new Blob([ab]);

href =  (window.URL || window.webkitURL).createObjectURL( blob );
&#13;
&#13;
&#13;