0
我想实现一个按钮,将触发一个http休息呼叫到后端 - 后端会回复一个pptx文件(powerpoint) - 我想将这个文件保存在客户端。Angularjs/Javascript下载pptx在客户端
我实现了如下一段:
--- 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是一个混乱的部分 - 但找不到正确的做法。
由于提前,
弗洛里安
这是我努力 - 你有一个想法,我究竟做错了什么? – Florian
我的意思是,您可以尝试使用锚点而不是按钮,只需将您在下载函数中使用的url作为其href。 – fokion
我不会下载该元素,然后将其编码为一个锚点。最好把href指向资源并用javascript点击它。 所以锚的href应该是“http:// localhost:8888/download?id =”+ anIdCommingFromSomewhere“ – fokion