我正在尝试实现一个按钮,该按钮会触发对后端的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是混乱的部分 - 但找不到正确的方法。
提前致谢,
弗洛里安
答案 0 :(得分:0)
我不会下载该元素,然后在锚中对其进行编码。最好将href指向资源并使用javascript单击它。所以主播的href应该是“localhost:8888 / download?id =”+ anIdCommingFromSomewhere“