[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.
Чтобы загрузить файл с помощью Ajax в приложении Asp.Net Core, вы можете использовать библиотеку jQuery для выполнения запроса и манипулирования DOM.
Вот примеры того, как загрузить файл с помощью Ajax в приложении Asp.Net Core:
Отправка файла со стороны сервера
- Добавьте библиотеку jQuery в свой проект. Вы можете загрузить ее с сайта jQuery или использовать CDN. Например, чтобы использовать CDN, добавьте следующую строку в файл _Layout.cshtml:
1 |
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> |
2. Создайте действие в вашем контроллере, которое возвращает содержимое файла в виде строки. Например:
1 2 3 4 5 6 |
[HttpGet] public string GetFileContent() { string filePath = Path.Combine(_environment.WebRootPath, "myfile.txt"); return System.IO.File.ReadAllText(filePath); } |
В этом примере действие считывает содержимое текстового файла с именем «myfile.txt«, расположенного в папке wwwroot проекта.
3. В представлении добавьте кнопку или ссылку, которая будет вызывать Ajax-запрос. Например:
1 2 |
<button id="loadFileButton">Load file</button> <div id="fileContent"></div> |
В этом примере добавляется кнопка с id «loadFileButton», а содержимое файла будет отображаться в div с id «fileContent».
4. Добавьте следующий код JavaScript в представление или в отдельный файл:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$(document).ready(function () { $("#loadFileButton").click(function () { $.ajax({ type: "GET", url: "/MyController/GetFileContent", success: function (result) { $("#fileContent").text(result); }, error: function (xhr, status, error) { alert("Error: " + error); } }); }); }); |
В этом примере обрабатывается событие нажатия кнопки «loadFileButton», и Ajax-запрос отправляется на действие «GetFileContent» контроллера «MyController». При успешном выполнении запроса содержимое файла отображается в div «fileContent». При возникновении ошибки выводится предупреждение с сообщением об ошибке.
Вот и все! При нажатии на кнопку содержимое файла будет загружено и отображено на странице с помощью Ajax.
Отправка файла со стороны клиента
Содержимое Index.cshtml:
1 2 3 4 5 6 7 8 |
<form id="form" name="form" action="/uploader" enctype="multipart/form-data" method="post"> <div class="buttons"> <div class="upload-button"> <div class="label">Click me!</div> <input id="files" name="files" type="file" size="1" multiple onchange="uploadFiles('files');" /> </div> </div> </form> |
JavaScript код, в том же представлении или в отдельном файле:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
function uploadFiles(inputId) { var input = document.getElementById(inputId); var files = input.files; var formData = new FormData(); for (var i = 0; i != files.length; i++) { formData.append("files", files[i]); } $.ajax( { url: "/uploader", data: formData, processData: false, contentType: false, type: "POST", success: function (data) { alert("Files Uploaded!"); } } ); } |
Контроллер MyController:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
[HttpPost] public async Task<IActionResult> Index(IList<IFormFile> files) { foreach (IFormFile source in files) { string filename = ContentDispositionHeaderValue.Parse(source.ContentDisposition).FileName.Trim('"'); filename = this.EnsureCorrectFilename(filename); using (FileStream output = System.IO.File.Create(this.GetPathAndFilename(filename))) await source.CopyToAsync(output); } return this.View(); } private string EnsureCorrectFilename(string filename) { if (filename.Contains("\\")) filename = filename.Substring(filename.LastIndexOf("\\") + 1); return filename; } private string GetPathAndFilename(string filename) { return this.hostingEnvironment.WebRootPath + "\\uploads\\" + filename; } |
Я надеюсь, что вам понравилось читать эту статью, и она оказалась легкой для понимания. Пожалуйста, дайте мне знать, если у вас есть какие-либо комментарии или исправления.
Так же вам может быть интересна предыдущая статья — Как сделать всплывающее модальное окно в Asp.Net.
Вы хотите научится писать код на языке программирования C#?
Создавать различные информационные системы, состоящие из сайтов, мобильных клиентов, десктопных приложений, телеграмм-ботов и т.д.
Переходите к нам на страницу Dijix и ознакомьтесь с условиями обучения, мы специализируемся только на индивидуальных занятиях, как для начинающих, так и для более продвинутых программистов. Вы можете взять как одно занятие для проработки интересующего Вас вопроса, так и несколько, для более плотной работы. Благодаря личному кабинету, каждый студент повысит качество своего обучения, в вашем распоряжении:
- Доступ к пройденному материалу
- Тематические статьи
- Библиотека книг
- Онлайн тестирование
- Общение в закрытых группах
Живи в своем мире, программируй в нашем.