Возврат более одного изображения из веб-службы .NET - PullRequest
4 голосов
/ 29 августа 2010

Я могу вернуть изображение в виде байтового массива из моего веб-сервиса .NET ..

У меня такой вопрос: что если я хочу вернуть более одного изображения за один запрос? Например, мой веб-метод в настоящее время выглядит примерно так:

public byte[] GetImage(string filename)

НО, что я пытаюсь понять, так это то, как я могу достичь чего-то большего, как это:

public ..?... GetAllMemberStuffInOneHit(string memberID)

Это вернет, например, несколько изображений вместе с некоторой другой информацией, такой как имя члена и отдел.

Можно ли это сделать? Пожалуйста, помогите, спасибо.

Ответы [ 2 ]

4 голосов
/ 29 августа 2010

Абсолютно.Вместо того, чтобы возвращать только байтовый массив, создайте класс DTO, который имеет байтовый массив, а также потенциально другую полезную информацию (имя файла, тип содержимого и т. Д.).Тогда просто верните список тех.Примерно так:

public class MyImage
{
    public byte[] ImageData { get; set; }
    public string Name { get; set; }
    public MyImage()
    {
        // maybe initialize defaults here, etc.
    }
}

public List<MyImage> GetAllMemberStuffInOneHit(string memberID)
{
    // implementation
}

Поскольку имя вашего метода подразумевает, что вы хотите вернуть еще больше информации, вы можете создать больше классов DTO и собрать их вместе, чтобы создать объект "member".Как то так:

public class Member
{
    public List<MyImage> Images { get; set; }
    public string Name { get; set; }
    public DateTime LastLogin { get; set; }
    // etc.
}

public Member GetAllMemberStuffInOneHit(string memberID)
{
    // implementation
}
1 голос
/ 29 августа 2010

Простое решение - просто вернуть коллекцию List<byte[]>, например:

[WebMethod]
public List<byte[]> GetAllImages(string memberID)
{
    List<byte[]> collection = new List<byte[]>();
    // fetch images one at a time and add to collection
    return collection;
}

Чтобы использовать это, вам понадобится эта строка вверху вашего Service.cs файла:

using System.Collections.Generic;
...