MVC Открыть двоичный файл в Microsoft Word - PullRequest
0 голосов
/ 19 июня 2020
• 1000 Хотя это работает хорошо, наша организация переходит с IE на Chrome, и это не работает в Chrome, и, насколько я слышал, Chrome не поддерживает ActiveX, который используется для открытия Microsoft Word.

Итак, мы ищем решение, которое будет работать в Chrome.

Быстрый пример того, что мы делаем.

Javascript запущено onclick событие

var wordObject = new ActiveXObject("Word.Application");

wordObject.Documents.open('http://localhost:8080/Document/Download/MyDocument.docx?documentId=12345');
wordObject.Visible = true;

Действие в контроллере

[HttpGet]
public ActionResult Download(int documentId)
{
     var result = DocumentService.GetLatestDocumentVersion(documentId);

     if (!result.Succeeded)
     {
          return HttpNotFound();
     }

     return new DocumentResult(result.Data.FileData, result.Data.FileType, result.Data.FullName);
}

public class DocumentResult : FileContentResult
{
    private ContentDisposition _contentDisposition;

    public DocumentResult (byte[] fileContents, FileType fileType, string fileDownloadName)
         : base(fileContents, fileType.ToMimeType())
    {
         string disposition = fileType == FileType.Pdf ? DispositionTypeNames.Inline : DispositionTypeNames.Attachment;
         _contentDisposition = new ContentDisposition(disposition);
         _contentDisposition.FileName = fileDownloadName;
    }
}

Мне нужна такая же функциональность, но в Chrome, есть идеи?

1 Ответ

0 голосов
/ 28 июля 2020

Таким образом, вместо того, чтобы открывать слово через javascript, вы просто заменяете URL-адрес чем-то вроде

<a href="ms-word:nft|u|https://localhost/Document/Download/MyDocument.docx?documentId=1899240|s|">Document</a>

Это использует схемы офисных uri, см. https://docs.microsoft.com/en-us/office/client-developer/office-uri-schemes?redirectedfrom=MSDN

Благодаря поддержке MS Premier.

...