2016-09-20 2 views
1

Мы переносим приложение ASP.NET MVC, в котором есть функция для открытия PDF-файла на новой вкладке с помощью FileContentResult.Открыть PDF в IE11 на новой вкладке без подсказки - mssaveoropenblob

return new FileContentResult(byteArray, "application/pdf"); 

Теперь мы мигрируем это приложение для React и от от API (на стороне сервера), мы посылаем обратно ответ, как показано ниже: -

response.Content = new ByteArrayContent(pdfByteArray); 
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf"); 

На React стороны пользовательского интерфейса, мы с помощью реакции, как показано ниже: -

postData(POST_API_ENDPOINT, requestData, ((err, data) => { 
    if (data.ok) { 
    data.blob().then(function(myBlob) { 
     if (window.navigator && window.navigator.msSaveOrOpenBlob) { 
      return window.navigator.msSaveOrOpenBlob(myBlob, "sample.pdf"); 
     } 
     else { 
      var objectURL = URL.createObjectURL(myBlob); 
      return window.open(objectUrl); 
      } 
     }); 
     } 
    })); 

Теперь я понимаю, что msSaveOrOpenBlob всегда предложит пользователю «открыть/сохранить» в IE11. Какие еще существуют варианты, если мне нужно открыть PDF-файл на другой вкладке без подсказок?

Я предполагаю, что существует другой способ сделать это с помощью нижеприведенного способа, но опять же длина URL-адресов ограничивает это.

window.open("data:application/pdf;base64, " + base64EncodedPDF); 

ответ

0

IE не позволяет нам открывать URL-адрес данных на новой вкладке (возможно, по соображениям безопасности), и там не было обходной проблемы с аналогичной проблемой ранее.

Мы используем msSaveOrOpenBlob - не найдено альтернативы.

Смежные вопросы