отправка byteArray в теле JSON через http-запрос angularjs - PullRequest
0 голосов
/ 30 апреля 2018

Я хочу отправить запрос на публикацию, в котором тело запроса представляет собой JSON, включающее два атрибута, один из которых - информация о полотне, созданная с помощью fabricjs, а второй - byteArray эскиза проекта. проблема в том, что при отправке запроса я получаю null на стороне сервера.

var dataURI = this.getDataUrl($rootScope.imageType, $rootScope.imageQuality);
var strImage = dataURI.replace(/^data:image\/[a-z]+;base64,/, "");
var byteArray = covertBase64ToByteArray(strImage);

var data = {
  data: {
    name: name,
    state: canvas.fabric.toJSON(['selectable', 'name']),
    zoom: canvas.zoom,
    canvasWidth: width,
    canvasHeight: height,
  },
  typeArray: byteArray
};

$http({
  method: "POST",
  url: _url,
  data: JSON.stringify(data),
  processData: false,
  transformRequest: [],
  contentType: 'application/json',
})

Код сервера в .Net

public IHttpActionResult InsertOrUpdateUILayout(long user_Id, long layout_Id, int userLayout_Id, int? layoutType_Id, UserlayoutContentVM data)
{
    // back end code here
}

public class UserlayoutContentVM
{
    public object data { get; set; }
    //public string base64Image { get; set; }
    public byte[] typeArray{ get; set; }      
}

1 Ответ

0 голосов
/ 30 апреля 2018

При публикации данных в API бэкэнда необходимо указать метод для чтения данных из тела запроса. Это можно сделать с помощью атрибута FromBody, который сопоставит данные тела с определенной моделью.

Итак, добавьте все свойства к одной модели

public class UserlayoutContentVM
{
    public long user_Id { get; set; }
    public long layout_Id { get; set; }
    public int userLayout_Id { get; set; }
    public int? layoutType_Id { get; set; }
    public object data { get; set; }
    public byte[] typeArray{ get; set; }
}

Затем убедитесь, что клиент отправляет все данные в той же структуре и использует атрибут FromBody в методе контроллера для чтения значений

public IHttpActionResult InsertOrUpdateUILayout([FromBody]UserlayoutContentVM data){ }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...