Сохранить изображение в базу данных с помощью API - PullRequest
0 голосов
/ 06 мая 2019

У меня есть веб-приложение со многими слоями (DAL, BLL, SL, UI), каждый слой в отдельном проекте.

Я использую веб-API на уровне представления (UI), используя ajax,где я использую одностраничное приложение.

Пример: в действии index в домашнем контроллере на уровне представления (UI) ссылается только на представление:

public class MaCityController : Controller
{
    public IActionResult Index()
    {
        return View("~/Views/Mainten/MasterFile/MaCity/Index.cshtml");
    }
}

и в этом представлении я делаюмоя операция CRUD с использованием Web API и Ajax:

function Add() {     
        var NameAr = $('#NameAr').val();
        var NameEn = $('#NameEn').val();
        var Image = $('#FileName').val();
        var newData = new Object();

        newData.NameAr = NameAr;
        newData.NameEn = NameEn;
        newData.Image=Image;

        $.ajax({
            type: "POST",
            url: APIURL + "api/MaCity/Add",
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify(newData),
            success: function () {
                $('#myModal').modal('hide');
                debugger;
                loadData();

            },
            failure: function (data) {
                alert(data.statusText);
            },
            error: function (data) {
                alert(data.statusText);
            }
        });
    }
    }

Мой код публикации в Sl как

[HttpPost]
public IActionResult Add(City scItem)
{
        _unitOfWork.GetRepository<City>().Add(scItem);
        _unitOfWork.SaveChanges();
        return Ok();
}

Где api В другом приложении с портом, отличным от уровня представления (UI), и любым другимс базой данных происходит в SL (нет сделки с данными в пользовательском интерфейсе).

Мне нужно загрузить изображение на сервер и сохранить (URL сервера изображений) в базе данных.

Я прочитал много статейно я не могу найти решение, чтобы решить мою проблему.

Любая помощь?

1 Ответ

0 голосов
/ 06 мая 2019

Вы пробовали проверить, добавляется ли файл в объект запроса json?Есть несколько способов попробовать это, например, используя такой инструмент, как Telerik Fiddler

внутри вашего метода json post, проверьте, есть ли какие-либо файлы в вашей форме

 var file =$(this).prop('files')[0];

Несколько примербудет следующим

добавить изображение в FormData

formdata = new FormData();
    if($(this).prop('files').length > 0)
    {
        var file =$(this).prop('files')[0];
        formdata.append("image", file);
    }

Затем, наконец, опубликуйте сообщение

jQuery.ajax({
    url: "api_path,
    type: "POST",
    data: formdata,
    processData: false,
    contentType: false,
    success: function (result) {
         // if all is well
         // play the audio file
    }
});

Вы также можете попробовать отправить данные с вашего контроллера(при условии, что вы используете какой-то аромат MVC)

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