【问题标题】:Allow download of word document file in angular js允许在angular js中下载word文档文件
【发布时间】:2016-12-09 19:40:23
【问题描述】:

我有一个应用程序,它允许上传 .pdf、.png、.jp(e)g、.doc 和 .docx 等文件,如下所示

   <button type="button" ngf-select class="btn btn-warning btn-block"
           ngf-change="vm.setCv($file, vm.person)">
                Add Doc
   </button>

    vm.setCv = function ($file, person) {
        if ($file) {
            DataUtils.toBase64($file, function(base64Data) {
                $scope.$apply(function() {
                    person.cv = base64Data;
                    person.cvContentType = $file.type;
                });
            });
        }
    };

这些文档以字节数组(byte[])的形式存储在数据库中。

现在我想提供一个链接,让别人打开或下载文件。

<a ng-click="vm.openFile(vm.person.cvContentType, vm.person.cv)">open</a>

function openFile (type, data) {
    $window.open('data:' + type + ';base64,' + data, '_blank', 'height=300,width=400');
}

上述功能适用于 pdf 和图像文件,但不适用于 doc 和 docx 文件。

我的问题是如何修改此代码,以便即使浏览器不允许或无法打开 .doc 和 .docx 文件,它至少允许以正确格式下载文件。

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    将您的数据转换为 blob 并分配给 a 标记。它将下载所有类型的文件。这个解决方案对我有用!将您的 base64 转换为 blob here

     var myBlob = new Blob([data],{type:type})
     var blobURL = (window.URL || window.webkitURL).createObjectURL(myBlob);
     var anchor = document.createElement("a");
     anchor.download = fileName;      // Downlaod File Name
     anchor.href = blobURL;
     anchor.click();
    

    【讨论】:

    • 执行“new Blob(..)”似乎会损坏文件。打开下载的文件时,它会显示类似这样的内容“UEsDBBQABgAIAAAAIQDS8G6E2wEAAFEIAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA”
    • 试试这个进行blob转换stackoverflow.com/questions/16245767/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 2022-01-23
    • 2020-09-09
    • 1970-01-01
    相关资源
    最近更新 更多