Mam poniższy kod w moim maszynopisie, aby wywołać metodę web api i pobrać tablicę bajtów binarnych (BLOB), która jest plikiem PDF. Moim wymaganiem użytkownika jest otwarcie pliku PDF w nowym oknie.Potrzebujesz otworzyć blob/PDF w oknie IE
$scope.selectRow = (itemImageNumber: string, printProcessId: string, printXmlId: string) => {
itemService.GetOutgoingDocument($scope.item.ItemId, itemImageNumber, printProcessId, printXmlId).success((response) => {
var file = new Blob([response], { type: 'application/pdf' });
var fileUrl = URL.createObjectURL(file);
//$scope.outDocContent = $sce.trustAsResourceUrl(fileUrl);
var win = window.open($sce.trustAsResourceUrl(fileUrl));
win.focus();
}).error(() => {
var message =
"The document you selected can’t be displayed at this time. Please call Customer Service at xxx-xxx-xxxx for assistance.";
$rootScope.$broadcast("app-message", {
type : "danger",
message : message
});
});
}
Ten kod działa poprawnie w przeglądarce Chrome. Dokument otwiera się zgodnie z oczekiwaniami. Jednak IE pyta "Czy chcesz zezwolić tej witrynie na otwieranie aplikacji na twoim komputerze?" i kiedy jest to dozwolone, powiedz "Nie są zainstalowane żadne aplikacje, aby otworzyć ten rodzaj łącza (blob)".
Wszelkie pomysły, jak otworzyć to w nowej karcie lub zapisać plik blob jako plik w ostateczności?
Dziki domysł: istnieją równie podobne pytania, które mogą być pomocne: http://stackoverflow.com/questions/28196065/downloading-pdf-as-blob-with-js-in-ie9, http://stackoverflow.com/questions/24007073/open-links-made-by-createobjecturl-in-ie11 W szczególności ta specyficzna dla IE linia może być interesująca: 'window.navigator.msSaveOrOpenBlob (blobObject, fileName);' –