Как получать данные формы и обрабатывать данные в веб-api

Я новичок в веб-API. Здесь отправляются данные формы из приложения Angular 4 в веб-API.

данные формы содержат данные о регистрации пользователя как mFormData и изображение пользователя как mImage.

Я хочу сохранить изображение в системной папке ex: D: / uplodedImages и необходимо хранить все данные пользователя в базе данных.

Я изо всех сил пытаюсь сделать вышеперечисленное.

service.ts (угловой 4)

  CreateNewComitteeMember(mFormData, mImage) {
    const formData: FormData = new FormData();
    formData.append('ImageFile', mImage, mImage.name);  
    formData.append('mFormData', JSON.stringify(mFormData));
    return this.http.post(this.BASE_URL + `/api/CreateNewComitteeMember`, formData)
  }

API

[AllowAnonymous]
        [HttpPost]
        [Route("api/CreateNewComitteeMember")]
        public Task<HttpResponseMessage> CreateNewComitteeMember()
        {
            //How to do the remaining things here.
        }

может ли кто-нибудь помочь мне решить эту проблему.

Думаю, что это, отвечает на ваш вопрос.

npinti 26.10.2018 09:11
0
1
4 917
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете просто получить данные, обратившись к имени, которое вы использовали при добавлении данных.

Но поскольку объект java не распознается ASP.NET. Вам нужно будет сериализовать «mFormData». Итак, запрос изменится вот так.

formData.append('mFormData', JSON.stringify(mFormData));

Теперь в вашем веб-API создайте модель, которая копирует ваши «mFormData», давайте назовем ее MFormData.

Пример,

public class MFormData 
{
    public string Name {get; set;}
    public int Age {get; set;}
    public string Xyz {get; set;}
    public string ImageUrl {get; set;}
    ...
}

Теперь в вашем API вы можете получить доступ к таким данным.

    [AllowAnonymous]
    [HttpPost]
    [Route("api/CreateNewComitteeMember")]
    public Task<HttpResponseMessage> CreateNewComitteeMember()
    {
        var imageData = HttpContext.Current.Request.Params["mImage"];
        var formData = new JavaScriptSerializer()
        .Serialize<MFormData>(HttpContext.Current.Request.Params["mFormData"]);
        try
        {
            //Function to save the file and get the URL
            formData.ImageUrl = new ApplicationBussinessLayer().SaveFileInDir(imgeData);
            //Function to save data in the DB
            var saveData = await new AppicationBussinessLayer().SaveUserInfo(formData);    
        }
        catch(Exception ex)
        {
            return Request.Create(HttpStatusCode.Code, "Some error");
        }
        return Request.Create(HttpStatusCode.OK, "Data Saved");
    }

тип или пространство имен ApplicationBussinessLayer не может быть найдено @Shahbaaz

Zhu 27.10.2018 14:39

Это та часть, которую вам нужно написать для сохранения данных в базе данных на бизнес-уровне приложений. @Zhu

Shahbaaz 27.10.2018 18:33

И данные изображения равны нулю

Zhu 27.10.2018 18:35

Как у вас получается изображение? @Zhu

Shahbaaz 27.10.2018 18:36

FormData отображается при просмотре отладчика, но formdata показывает null в api

Zhu 27.10.2018 18:37

Простите, позвольте перефразировать. Как вы получаете изображение в Angular?

Shahbaaz 27.10.2018 18:38

Хорошо. Круто :) ******* Наполнитель *****

Shahbaaz 27.10.2018 18:40

но в консоли браузера я могу видеть выбранные данные изображения после нажатия кнопки загрузки @Shahbaaz

Zhu 27.10.2018 19:03

Я вижу, что ошибка «mImage» должна быть «Файл изображения».

Shahbaaz 27.10.2018 19:10

Плохо показывать решение, где релевантной частью является «просто напишите ApplicationBusinessLayer».

PRMan 25.08.2021 17:24

Другие вопросы по теме