使用AngularJS发送数据的Multipart / form-data表单

时间:2016-01-01 06:12:03

标签: javascript jquery angularjs angularjs-scope

我需要将表单数据发布到URL,这是一个webapi,方法是post

var surveyData = {
            Name: xyz,
            SetReminder: 'false',
            NoOfReminder: '0',
            StartDate: 'xyz',
            EndDate: 'xyz',
            Language: 'eng-us',
            Duration: '1',
            ApplicationName: 'xyz',
            SurveyTypeName: 'zxy'
        };

我编写了下面的代码,它调用了wbeapi的post方法但该函数能够发送数据但是post方法无法读取使用angular js发送的数据。

function(surveyData) {
               return $http.post(URL , surveyData,{
                    headers: { 'Content-Type': 'multipart/form-data' }
                });

2 个答案:

答案 0 :(得分:1)

使用:

var data = HttpContext.Current.Request.Form["surveyData"];

从多部分表单中接收json数据。

如果您的多部分表单包含文件,那么要使用这些文件:

System.Web.HttpFileCollection postedfiles = System.Web.HttpContext.Current.Request.Files;

另请注意,不要在控制器操作方法中使用任何参数。

确保导入这些名称空间:

using System.Net.Http;
using System.Web;
using System.Web.Http;

编辑:

修改您的javascript代码。

var data = new FormData();
data.append("surveyData", angular.toJson(surveyData));
  

如果要添加图像/其他,可以使用代码添加图像   下面。

//data.append("uploadedFile", $scope.files[0]);

所以你的代码将是:

function(surveyData) {
               return $http.post(URL , data,{
                    headers: { 'Content-Type': 'multipart/form-data' }
                });

现在您将能够使用

接收json数据
var data = HttpContext.Current.Request.Form["surveyData"];

和images / otherfiles(如果有)使用

System.Web.HttpFileCollection postedfiles = System.Web.HttpContext.Current.Request.Files;

答案 1 :(得分:0)

如果web api是Multipart / form-data,那么您需要在下面的表单中创建键值对,以便创建多部分表单数据。

var objFormData = new FormData();
                for (var key in surveyData)
                    objFormData.append(key, surveyData[key]);

然后您需要使用以下代码发送创建的多部分表单数据:

 return $http.post(URL, objFormData, {
                    transformRequest: angular.identity,
                    headers: { 'Content-Type': undefined }
                });