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