#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>