2017-01-23 3 views
1

Я работаю над проектом, где у нас есть база данных и отдельная файловая система, которые хранятся на одном сервере и доступны через запросы и ответы стека служб.Вернуть ответ и файл через servicestack

База данных содержит соответствующие метаданные для заданного файла в файловой системе и поэтому мы хотели бы иметь возможность извлекать и хранить эти файлы и документы одновременно, чтобы предотвратить потерянные данные.

Возможно ли вернуть как поток данных (файл), так и ответ DTO в том же ответе? Аналогично тому, как JsonServiceClient.PostFileWithRequest позволяет передавать как файл, так и запрос DTO на сервер. Если возможно, как это будет обрабатываться как на стороне сервера, так и на стороне клиента?

В моих исследованиях пока большинство приложений, похоже, просто вернули либо ответный документ, либо поток, и в основном с использованием HttpResult.

Заранее благодарен!

ответ

1

Нет поддержки для MIME Multipart/mixed ответов, которые в основном предназначены для электронной почты и редко поддерживаются и используются для HTTP. Самый простой способ отправить дополнительные метаданные с помощью загрузки файла ответа является использование HTTP-заголовков, например:

return new HttpResult(fileInfo) { 
    Headers = { 
     {"X-key", "value"} 
    } 
}; 

Другим вариантом было бы встраивать содержимое файла внутри DTO:

class FileResponseWithMetadata 
{ 
    public byte[] Data { get; set; } 
    public string Key { get; set; } 
} 

Для возвращая несколько файлов, которые вам нужны, чтобы заархивировать файлы, используя библиотеку, например DotNetZip, и верните это вместо этого.

+0

спасибо! плохо дать им попробовать –

Смежные вопросы