powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как upload файл через ajax?
7 сообщений из 7, страница 1 из 1
Как upload файл через ajax?
    #39849325
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASP.NET Core .

Юзер грузит файл в базу в виде текста.
Так он выбирает какой файл грузить:

Код: html
1.
<input type="file" id="script_to_upload"name="files">



Как далее по кнопке загрузить файл?

Нашел такое:
https://docs.microsoft.com/en-us/aspnet/core/mvc/models/file-uploads?view=aspnetcore-2.2

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
[HttpPost("UploadFiles")]
public async Task<IActionResult> Post(List<IFormFile> files)
{
    long size = files.Sum(f => f.Length);

    // full path to file in temp location
    var filePath = Path.GetTempFileName();

    foreach (var formFile in files)
    {
        if (formFile.Length > 0)
        {
            using (var stream = new FileStream(filePath, FileMode.Create))
            {
                await formFile.CopyToAsync(stream);
            }
        }
    }

    return Ok(new { count = files.Count, size, filePath});
}



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

Поэтому решил грузить через вызов Ajax метода по кнопке.
Как сделать загрузку файла через ajax метод?
...
Рейтинг: 0 / 0
Как upload файл через ajax?
    #39849374
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал так, метод контроллера вызывается, но в нем невозможно достать Request.Form
Что изменить?


Код: javascript
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.
29.
30.
31.
32.
33.
function DoUpload() {
                if (window.FormData !== undefined) {
                    var fileUpload = $("#script_to_upload").get(0);
                    var files = fileUpload.files;

                    var fileData = new FormData();

                    // Looping over all files and add it to FormData object  
                    for (var i = 0; i < files.length; i++) {
                        fileData.append(files[i].name, files[i]);
                    }

                    fileData.append('parent_id', 'Vasya');
                    fileData.append('username', 'Zelya');

                    $.ajax({
                        url: '/Db/UploadScript',
                        type: "POST",
                        contentType: false, // Not to set any content header  
                        processData: false, // Not to process data  
                        data: fileData,
                        dataType: 'json',
                        success: function (result) {
                            alert(result);
                        },
                        error: function (err) {
                            alert(err.statusText);
                        }
                    });
                } else {
                    alert("FormData is not supported.");
                }  
            }


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 [HttpPost]
        public ActionResult UploadScript()
        {
            string Name = "Kuku";
            try
            {
                var files = HttpContext.Request.Form.Files; //<--- улетает

                Name = Request.Form["username"];//<---улетает
            }
            catch(Exception x)
            {
                Console.WriteLine(x.Message);
            }

            return Content("OK");
        }
...
Рейтинг: 0 / 0
Как upload файл через ajax?
    #39849451
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос снят.
...
Рейтинг: 0 / 0
Как upload файл через ajax?
    #39849482
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там ж прост обращение к модели можно сделать в контролере..зачем сложности с формой и ручным методом.
...
Рейтинг: 0 / 0
Как upload файл через ajax?
    #39849654
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuтам ж прост обращение к модели можно сделать в контролере..зачем сложности с формой и ручным методом.

Мне надо передать дополнительные параметры в контроллер, кроме списка файлов, например:
я гружу файлы не на диск сервера, а в базу, и надо укзазать в каоке место в базе загружать, еще 2-3 параметра.
А метод контроллера я так понял предполагает только список файлов.
...
Рейтинг: 0 / 0
Как upload файл через ajax?
    #39849682
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинhandmadeFromRuтам ж прост обращение к модели можно сделать в контролере..зачем сложности с формой и ручным методом.

Мне надо передать дополнительные параметры в контроллер, кроме списка файлов, например:
я гружу файлы не на диск сервера, а в базу, и надо укзазать в каоке место в базе загружать, еще 2-3 параметра.
А метод контроллера я так понял предполагает только список файлов.

нет такого ограничения. делай модель на js тоже самое по сути
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
public class PersonViewModel
{
    public string Name { get; set; }
    public IFormFile Avatar { get; set; }
}
<form asp-action="Create" asp-controller="Home" method="post" enctype="multipart/form-data">
    <p>
        <label>Имя</label>
        <input name="Name" class="form-control" />
    </p>
    <p>
        <label>Аватар</label>
        <input name="Avatar" type="file" class="form-control" />
    </p>
    <p>
        <input type="submit" value="Добавить" />
    </p>
</form>
...
Рейтинг: 0 / 0
Как upload файл через ajax?
    #39849709
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

.. примерно, как и выше, только если коллекция файлов загружается, то у меня вот так работает:

модель
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
public class SendParams
    {
        public string UserLogin { get; set; }        
        public string AddressTo { get; set; }
        public string Body { get; set; }
        public string Subject { get; set; }
        public IEnumerable<IFormFile> myfiles { get; set; }
    }



в контроллере

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
[HttpPost]
        public IActionResult SendMessage([FromForm] SendParams messparams)
        {
            var message = new MimeMessage();
            message.From.Add(new MailboxAddress(messparams.UserLogin));
            message.To.Add(new MailboxAddress(messparams.AddressTo));
            message.Subject = messparams.Subject;
            /// ...
            var myfiles = HttpContext.Request.Form.Files;
            if (myfiles.Count() > 0)
            {
                foreach (var myfile in myfiles)
                {
                    var attachment = new MimePart(myfile.ContentType)
                    {
                        Content = new MimeContent(myfile.OpenReadStream(), ContentEncoding.Default),                      
                        
                        FileName = myfile.FileName
                    };
                    multipart.Add(attachment);
                }
            }
     }



в JS

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
let formData = new FormData();
      formData.append("AddressTo", this.email);
      formData.append("Body", this.body);
      formData.append("Subject", this.subject);
      formData.append("UserLogin", this.myUser.UserLogin);
      
      for (var i = 0; i < this.files.length; i++) {
        let file = this.files[i];
        formData.append("myfiles[" + i + "]", file);
      }



.. где-то так
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как upload файл через ajax?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]