Отправка IFormFile от html до ajax на контроллер - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь отправить объект типа "GenericUser" на вызов ajax, а затем отправить два свойства из этого объекта в контроллер, но безуспешно.

это объект GenericUser:

    public class GenericUser
{
    public string Username { get; set; }
    public string Password { get; set; }
    public int MessageId { get; set; }
    public string UserId { get; set; }
    public int Likes { get; set; }
    public Service Service { get; set; }
    public DateTime Time { get; set; }
    public ApplicationUser User { get; set; }
    public string Proffesion { get; set; }
    public string CompanyName { get; set; }
    public string School { get; set; }
    public LocationModel Location { get; set; }
    public string input { get; set; }
    public IFormFile Photo { get; set; }
}

обратите внимание, что у него есть свойство "Photo" типа IFormFile и свойство "Service" типа Service, это два объекта, которые мне нужно получить из формы и в ajax для контроллер.

, вот так выглядит html:

 <div class="addAPicture">
                    <form id="formt" enctype="multipart/form-data" asp-action="UploadImage" asp-controller="Actions">
                        <input id="file" asp-for="Photo" type="file"/>
                        <input id="service" asp-for="Service" />
                        <i>Add a picture</i>
                    </form>
                </div>

, затем jquery & ajax:

$(document).ready(function () {
    $("#checkChange").change(function () {

        var fileInput = document.getElementById('file');
        var serviceInput = document.getElementById('service');
        var file = fileInput.files[0];
        var service = serviceInput;
        var formData = new FormData();
        formData.append('photo', file);
        formData.append('service', service);
        if ($("#checkChange").val() !== "") {
            $.ajax({
                type: "POST",
                url: '/Actions/UploadImage',
                data: formData,
                dataType: "JSON",
                success: function (data) {          
                },
                error: function (e) {
                    console.log(e);
                }
            });
        }
    }); 
});

и, наконец, метод контроллера:

public string UploadImage(Service service, IFormFile photo)
    {

        if (ModelState.IsValid)
        {
            if (photo!=null)
            {
                string uploadsFolder = Path.Combine(Hosting.WebRootPath, "images");
                var uniqueFileName = Guid.NewGuid().ToString() + "_" + photo.FileName;
                string filePath = Path.Combine(uploadsFolder, uniqueFileName);
                photo.CopyTo(new FileStream(filePath, FileMode.Create));
                return filePath;
            }
        }
        var sessionId = _sessionManager.GetSession(service);
        var bot = _factory.GetBot(service);
        return null;
    }

Сбой при вызове ajax и, вероятно, сбой на контроллере ... Я перепробовал множество потоков в Интернете, но не смог найти то, что могло бы кто-нибудь мне поможет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...