Asp web api并将多个图像返回到angularjs

时间:2013-09-19 12:35:27

标签: asp.net asp.net-mvc angularjs asp.net-web-api

如何使用asp web api返回多个图像,然后设置angularjs来显示它们? 我一直在寻找,但我没有得到任何工作。我真的被困在这里所以任何帮助将不胜感激!

我目前的代码:     列出图像;             使用(var uow = new UnitOfWork())             {                 images = uow.ImageMetadatas.Query(m => m.AlbumId == albumId).Select(m => m.Filename)。ToList();             }

        var content = new MultipartContent();
        foreach (var img in images)
        {
            var image = new Bitmap(img);
            var thumbnail = image.GetThumbnailImage(200, 200, ThumbnailCallback, IntPtr.Zero);
            var stream = new MemoryStream();
            thumbnail.Save(stream, ImageFormat.Jpeg);

            var imgContent = new StreamContent(stream);
            imgContent.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg");
            content.Add(imgContent);
        }
        return new HttpResponseMessage(HttpStatusCode.Accepted) { Content = content };

1 个答案:

答案 0 :(得分:1)

看看这里,看它是否有帮助: Book Store application using AngularJS and Asp.Net Web Api

由于

编辑:

说明: 以下代码用于处理已保存在服务器上的图像文件。

首先,你必须从angularJS调用web api。最简单的方法是使用角度控制器中的$ http,但我建议为此方案创建数据服务,并将该服务注入需要访问该数据的所有控制器。

将此代码直接用于您的控制器:

$scope.myData = [];
$http({
        method: 'GET',
        url: 'api/controller/'
    }).
    success(function (data, status, headers, config) {
        $scope.myData = data;
    }).
    error(function (data, status) {
        console.log("Request Failed");
    });

或创建服务并将其注入控制器:

var myApp = angular.module('myApp', []);
myApp.factory("DataService", function ($http, $q) {
  var myData = []; 
  var read = function () {
    var deferred = $q.defer();
    deferred.resolve($http({
      method: 'GET',
      url: 'api/controller/'
    }));
    return deferred.promise;
  };
  return {
    MyData: myData,
    ReadData: read
  };
});
myApp.controller('MainCtrl', function ($scope, DataService) {    
  $scope.myData= [];        
  DataService.ReadData().
   then(function (config, data, headers, status) { $scope.myData = arguments[0].data; });
});

然后在服务器端创建一个'GET'方法以返回带有图像数据的可枚举对象:

public List<myData> GetData()
{            
  List<myData> returnData = GetImagesData();    
  return returnData;
}

这里'myData'类是数据模型。

希望它有所帮助。