Веб-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; }
Я пробовал с двумя или более идентификаторами документов, но загружал только один файл, а также не в правильном формате (без расширения).
- Быстрое добавление компонента в контекст веб-приложения Spring Web
- Фильтр Tomcat CORS
- Maven: настройте web.xml проекта веб-приложения
- Как вывести файл Excel * .xls из classического ASP
- пустой белый экран после входа в FB через веб-приложение?
Zipping – единственный вариант, который будет иметь согласованный результат во всех браузерах. MIME / многостраничный контент предназначен для сообщений электронной почты ( https://en.wikipedia.org/wiki/MIME#Multipart_messages ), и он никогда не собирался получать и анализировать на стороне клиента транзакции HTTP. Некоторые браузеры реализуют его, другие – нет.
Кроме того, вы можете изменить свой API, чтобы взять один docId и перебрать ваш API с вашего клиента для каждого docId.