2015-06-12 9 views
8

Ho un servizio web che sta inviando al client un file come ArrayBuffer che viene poi letta in un oggetto blob:"Accesso negato" quando l'incorporamento file da URL blob in IE

$scope.contentType = response.headers["content-type"]; 
$scope.file = new Blob([response.data], { type: $scope.contentType }); 
$scope.fileUrl = URL.createObjectURL($scope.file); 
$scope.content = $sce.trustAsResourceUrl($scope.fileUrl); 

sto usando un tag oggetto come contenitore:

<object id="documentContainer" ng-show="loaded" ng-attr-type="{{contentType}}" ng-attr-data="{{content}}" class="document-container"></object> 

Questa grande opera in FF, cromo, i browser mobili, browser web sviluppato da specie aliene che non hanno mai avuto contatti con l'umanità, ecc, ma non in IE.

Quando il parametro i dati del tag object è impostato, IE risponde nella console con

Error: Access is denied.

Questo sembra essere una sorta di funzione di sicurezza in IE, dove non vuole utilizzare il file come un'origine perché risiede sul computer client. Vieta l'accesso anche se si utilizza javascript per creare un nuovo elemento dom con il set di origini dati.

Microsoft fornisce i propri metodi di blob come msSaveOrOpenBlob, ma devo essere in grado di incorporare il file nel browser, non richiedere all'utente di aprire il file in un'applicazione esterna.

Qualcuno sa di una soluzione alternativa o di un modo per incorporare il BLOB, che può essere una vasta gamma di tipi di file, in IE? Mi dispiacerebbe dover ridimensionare drasticamente il servizio web e il front-end solo per ospitare IE, ma sembra che potrebbe essere il caso.

risposta

2

Penso che la risposta sia "no". Il nostro sito genera PDF al volo, ma annusiamo il browser per ciò che può essere fatto con il PDF restituito.

Esempio: http://www.cloudformatter.com/CSS2Pdf.Demos.Structures

Se siete su Chrome è possibile selezionare il "PDF Embed" qui e funziona come un fascino ... se siete su IE, anche se si seleziona "Incorpora", scarica il file. Perché IE non può e basta reindirizzare chiunque su IE al codice di download.

http://caniuse.com/#feat=datauri

E non iniziare bene su che cosa è sbagliato su IE, molte delle pagine appena rotto a causa di IE fermato serializzare tag di chiusura per alcuni tag "p" nel documento.

+0

L'api di blob è piuttosto diversa dall'utilizzo dell'uris di dati. Gli URI di dati sono pensati solo per la codifica di file di piccole dimensioni - penso che la maggior parte dei browser abbia un limite di pochi MB per la loro lunghezza. – mrturburdaugh

+0

4 GB per la maggior parte e solo in IE. Per quel link sopra, i limiti di 4 GB sono iniziati in IE 9. –