Angularjs / Javascript在客户端下载pptx

时间:2017-01-09 23:34:06

标签: javascript angularjs download powerpoint

我正在尝试实现一个按钮,该按钮会触发对后端的http休息调用 - 后端将回复pptx文件(powerpoint) - 我想在客户端保存此文件。

我实施了以下内容:

--- HTML ---

<button  target="_blank" type="button" class="btn btn-primary" ng-click="download()">Download</button> 


--- Javascript ---

  $scope.download = function () {
    registryService.setSelectedEmail($scope.data.name);
    $http.get("http://localhost:8888/download?id="+anIdCommingFromSomewhere).then(onDownloadCompleted, onFetchError);

  };

var onDownloadCompleted = function(response){
        var anchor = angular.element('<a/>'); //add anchor element to DOM
        anchor.attr({
            href: 'data:application/vnd.openxmlformats-officedocument.presentationml.presentation;charset=utf-8,' + encodeURIComponent(response), download: 'demo.pptx' })[0].click();
        anchor.remove(); // make sure to remove
};

此代码实际上下载了demo.pptx文件,但该文件已损坏。

我尝试使用reponse.data和base64编码但没有任何成功。

有人会看到这里有什么问题吗?我觉得href是混乱的部分 - 但找不到正确的方法。

提前致谢,

弗洛里安

1 个答案:

答案 0 :(得分:0)

我不会下载该元素,然后在锚中对其进行编码。最好将href指向资源并使用javascript单击它。所以主播的href应该是“localhost:8888 / download?id =”+ anIdCommingFromSomewhere“