Как просмотреть файл doc, который хранится в корневой папке в razor pages

#c# #file #asp.net-core #razor-pages

#c# #файл #asp.net-core #razor-страницы

Вопрос:

Мне нужно просмотреть содержимое загруженного файла doc при нажатии на кнопку «ПРОСМОТР», мой текущий код загружает файл, а не просматривает содержимое. Вот мой код

Attachment.cshtml

 @if (Model.AttachForms != null)
            {
                <table class="table" border="1" style="width:500px;margin-left:300px;">
                    <thead style="background-color:#DC3545">
                        <tr>
                            <th>File</th>
                            <th width="100px"></th>
                            <th width="100px"></th>
                        </tr>
                    </thead>
                    <tbody>
                        @foreach (var item in Model.AttachForms)
                        {
                            <tr>
                                <td>
                                    @Html.DisplayFor(modelItem => item.Name)
                                </td>
                                <td>
                                    @*asp page handler with define on post method*@
                                    <form asp-page-handler="view" method="post">
                                        <input asp-for="EmpID" type="hidden" value='@Request.Query["EmpID"]' />
                                        <input type="hidden" name="filename" value="@item.Name" />
                                        <button class="btn btn-success">View</button>
                                    </form>
                                    @*<img src="~/images/pencil(1).png" alt="Edit">
                                    <a asp-page-handler="view" asp-route-id="@item.Name">Edit</a>*@
                                </td>
                                <td>
                                    <form asp-page-handler="delete" method="post">
                                        <input asp-for="EmpID" type="hidden" value='@Request.Query["EmpID"]' />
                                        <input type="hidden" name="filename" value="@item.Name" />
                                        <button class="btn btn-danger">Delete</button>
                                        @*<img src="~/images/icons8-delete-trash-16.png" alt="Delete">
        <a asp-page="./Delete" asp-route-id="@item.Name">Delete</a>*@
                                    </form>
                                </td>
                            </tr>
                        }

                    </tbody>
                </table>
            }
            @if (Model.AttachForms == null)
            {
                <div class="text-center">
                    <p>No Files To Display</p>
                </div>
            }
 

Attachment.cshtml.cs

 public IActionResult OnPostView()
        {
            string filename = Request.Form["filename"];
            if (filename != null)
            {
                var Folder = EmpID.ToString();
                string fileview = Path.Combine(_env.WebRootPath, "Documents/EmployeeAttachments", Folder, filename);
                WebClient User = new WebClient();
                Byte[] fileBuffer = User.DownloadData(fileview);
                if (fileBuffer != null)
                {
                    return new FileContentResult(fileBuffer, "application/ms-word");
                }
            }
            return Page();
        }
 

когда я нажимаю на кнопку просмотра, он загружает файл, я хочу просмотреть файл в браузере.

если я изменяю этот фрагмент кода

 return new FileContentResult(fileBuffer, "application/ms-word");
 

Для

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

он будет отображаться следующим образом
введите описание изображения здесь

Комментарии:

1. Привет @ Teena, я бы рекомендовал сначала преобразовать word в pdf с помощью некоторых инструментов, а затем сохранить файл pdf в wwwroot папке. Chrome, похоже, не может преобразовать его автоматически.

2. В этой статье показано, как создать средство просмотра документов в ASP.NET Ядро приложения MVC с помощью GroupDocs.Viewer , но это не бесплатно.

Ответ №1:

Можно использовать Google document viewver в HTML <iframe> теге

 <iframe src="https://docs.google.com/gview?url=http://remote.url.tld/path/to/document.docamp;embedded=true"></iframe>