Веб-API: загрузка нескольких файлов отдельно

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

https://stackoverflow.com/questions/12266422/whats-the-best-way-to-serve-up-multiple-binary-files-from-a-single-webapi-metho 

Мой метод Web Api,

  public async Task DownloadMultiDocumentAsync( IClaimedUser user, string documentId) { List docIds = documentId.Split(',').Select(long.Parse).ToList(); List documentList = coreDataContext.Documents.Where(d => docIds.Contains(d.DocumentId) && d.IsActive).ToList(); var content = new MultipartContent(); CloudBlockBlob blob = null; var container = GetBlobClient(tenantInfo); var directory = container.GetDirectoryReference( string.Format(DirectoryNameConfigValue, tenantInfo.TenantId.ToString(), documentList[0].ProjectId)); for (int docId = 0; docId < documentList.Count; docId++) { blob = directory.GetBlockBlobReference(DocumentNameConfigValue + documentList[docId].DocumentId); if (!blob.Exists()) continue; MemoryStream memStream = new MemoryStream(); await blob.DownloadToStreamAsync(memStream); memStream.Seek(0, SeekOrigin.Begin); var streamContent = new StreamContent(memStream); content.Add(streamContent); } HttpResponseMessage httpResponseMessage = new HttpResponseMessage(); httpResponseMessage.Content = content; httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); httpResponseMessage.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); httpResponseMessage.StatusCode = HttpStatusCode.OK; return httpResponseMessage; } 

Я пробовал с двумя или более идентификаторами документов, но загружал только один файл, а также не в правильном формате (без расширения).

Zipping – единственный вариант, который будет иметь согласованный результат во всех браузерах. MIME / многостраничный контент предназначен для сообщений электронной почты ( https://en.wikipedia.org/wiki/MIME#Multipart_messages ), и он никогда не собирался получать и анализировать на стороне клиента транзакции HTTP. Некоторые браузеры реализуют его, другие – нет.

Кроме того, вы можете изменить свой API, чтобы взять один docId и перебрать ваш API с вашего клиента для каждого docId.

Interesting Posts

Выровнять линейный блок DIV вверху элемента контейнера

Android – печать полного исключения backtrace для журнала

В чем разница между valueforKey :, objectForKey :, и valueForKeyPath :?

Воспроизведение решеточного диаграммы дендрограммы с ggplot2

Простейшая настройка в Windows для отправки HTTP-запроса, получения и применения регулярного выражения к ответу и записи соответствия (output) для вывода файла

jquery $ (window) .height () возвращает высоту документа

Скопируйте раздел восстановления Windows 7 на загрузочный внешний диск

Есть ли способ «ограничить» результат с помощью ELOQUENT ORM Laravel?

Использование Process Monitor для отслеживания изменений реестра

Получить друзей в facebook с помощью Graph API v.2.0

Отображение времени в командной строке R

Автоматически загружать файлы в Internet Explorer без запроса на сохранение / отмену?

Зачем использовать префиксы для переменных-членов в classах C ++

Попытка понять CMTime и CMTimeMake

Spotify, Youtube, Shockwave Flash и другие программы, не работающие

Давайте будем гением компьютера.