WCF загружает большие файлы - PullRequest
0 голосов
/ 30 августа 2010

Я создаю приложение для цифровых вывесок, и мне нужно, чтобы мои пользователи могли загружать большие изображения / видео.Я посмотрел на режим потоковой передачи, чтобы разрешить загрузку и загрузку файла, что, кажется, является подходящим способом.Моя проблема заключается в том, что мне нужно выяснить правильный подход к загрузке.Мне нужно поместить запись в мою базу данных, затем загрузить файл в определенную папку на сервере (у каждого клиента есть своя собственная папка, куда файл должен быть помещен).Моя проблема в том, что не представляется возможным отправить больше информации вместе с файлом, чем поток для загрузки.Все, что мне нужно, это некоторые метаданные, имя файла и идентификатор клиента.У любого есть рабочий пример этого или указывайте мне правильное направление ...

С уважением / Брайан

Ответы [ 2 ]

1 голос
/ 30 августа 2010

Ну, вы не говорите, что вы пробовали и как это не удалось, но вот основные принципы того, как мы это делаем:

[ServiceContract]
public interface IMyStreamingService
{
    [OperationContract]
    void Upload(FileUploadRequest request);
}

[MessageContract]
public class FileUploadRequest
{
    [MessageHeader(MustUnderstand = true)]
    public string Path;

    [MessageBodyMember(Order = 1)]
    public Stream FileData;

    public FileUploadRequest(string path, Stream fileData)
    {
        this.Path = path;
        this.FileData = fileData;
    }
}
0 голосов
/ 31 августа 2010

Я ответил на аналогичный вопрос несколько дней назад. Вы должны объявить операцию, которая принимает и возвращает контракты сообщений. Вы должны создать контракты сообщения. Для потокового контракта может содержаться только один элемент body, имеющий тип Stream. Другие участники контракта должны быть объявлены в качестве заголовков. Связанный вопрос содержит полный пример для скачивания. Вам просто нужно сделать то же самое для загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...