Не удается открыть PDF в новой вкладке браузера Chrome - PullRequest
0 голосов
/ 22 мая 2018

Я не могу понять, как открыть PDF в новой вкладке Chrome.Следующий код работает в Internet Explorer, но не для Chrome.Я проверил настройку в Chrome и установил следующее:

enter image description here

Мой взгляд:

@Html.ActionLink("View", "OpenFileEncrypted", "Storage", new { fileNumber = item.accession_number, fileType = 2, openType = "NewTab" }, new { @class = "btn btn-primary ViewDownloadButton", @runat="server", @target = "_blank", @onclick = "javascript:clickView(" + item.accession_number + ")" })

Функция javascriptClickView устанавливает флажок на веб-странице.

Мой контроллер:

 public ActionResult OpenFileEncrypted(int? fileNumber, int? fileType, string openType)
    {            
      CloudStorageAccount storageAccount = CloudStorageAccount.Parse(      
      CloudConfigurationManager.GetSetting("StorageConnectionString"));

      CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

      CloudBlobContainer container = GetContainer(blobClient, Convert.ToInt32(fileType));

      KeyVaultKeyResolver cloudResolver = new KeyVaultKeyResolver(GetToken);

      var fileName = Convert.ToString(fileNumber) + ".pdf";
      CloudBlockBlob blockBlob = container.GetBlockBlobReference(fileName);

      BlobEncryptionPolicy policy = new BlobEncryptionPolicy(null, cloudResolver);
      BlobRequestOptions options = new BlobRequestOptions() { EncryptionPolicy = policy };

      var memStream = new MemoryStream();
      blockBlob.DownloadToStream(memStream, null, options, null);

      if (openType == null)
      {
       openType = "NewTab";
      }

      order_info OInfo = Ldb.order_info.Where(o => o.accession_number == fileNumber).FirstOrDefault();

       switch (openType)
       {
         case "NewTab":
             Response.AddHeader("Content-Disposition", "Inline; filename=" + fileName);
             OInfo.ReportViewed = true;
             break;
         case "Download":
             Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
             OInfo.ReportDownloaded = true;
             break;
       }

       if (OInfo != null)
       {
          Ldb.Entry(OInfo).State = EntityState.Modified;
          Ldb.SaveChanges();
       }

       return File(memStream.ToArray(), blockBlob.Properties.ContentType);            

Работает в IE, но не в Chrome.Когда кнопка нажата, она открывает новую вкладку, затем открывает поле для загрузки с именем и выбирает папку, в которую загружается .pdf.

Что я делаю не так?

1 Ответ

0 голосов
/ 22 мая 2018

Мне пришлось обновить обновление ContentType до «application / pdf»

return File(memStream.ToArray(), "application/pdf");

ContentType было «application / octet-stream»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...