【问题标题】:How to receive form data and process the data in Web API如何在 Web API 中接收表单数据并处理数据
【发布时间】:2019-03-30 21:24:14
【问题描述】:

我是 web API 的新手,这里将表单数据从 Angular 4 应用程序发送到 web 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.
        }

谁能帮我解决这个问题。

【问题讨论】:

  • 我认为this 回答了你的问题。

标签: c# .net angular asp.net-web-api


【解决方案1】:

您可以通过访问附加数据时使用的名称来简单地获取数据。

但是由于 ASP.NET 无法识别 java 对象。您将需要序列化“mFormData”。所以,请求会变成这样。

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

现在在您的 Web 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
  • 这是您必须编写代码以将数据保存在应用程序业务层的数据库中的部分。 @朱
  • 而图片数据为空
  • 您是如何获得图像的? @朱
  • FormData 在查看调试器时显示,但 formdata 在 api 中显示为空
猜你喜欢
  • 1970-01-01
  • 2012-11-16
  • 2021-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多