Получение ошибки "сжатая(заархивированная) папка недопустима" при получении zip-файла из web api на angularjs
Получение ошибки "сжатая(сжатая) папка недопустима" при получении zip-файла из веб-api на angularjs. Я создаю zip-файл в web api и отправляю его в вызов метода angularjs POST.
Угловое решение получает данные, но при использовании объекта BLOB и сохранении его он сохраняется как файл размером 1 КБ, и файл поврежден.
Что я уже пробовал:
Код веб-Api:
[HttpPost] [ODataRoute("DownloadGalleryzipfile")] public IHttpActionResult DownloadGalleryzipfile(string type, string galleryIds) { appLogService.WriteLog("MapService.Service", "MapServiceController", "DownloadGalleryzipfile", "DownloadGalleryzipfile method is executing"); List<int> lstIds = galleryIds.Split(',').ToList().ConvertAll<int>(Convert.ToInt32); ; var result = this.mapServiceDomain.GetSpecificGalleryImagesVideos(type, lstIds.ToArray()); if (result!= null & result.Count>0) { using (ZipFile zip = new ZipFile()) { foreach(var galleryDetail in result) { zip.AddEntry(galleryDetail.Name, Convert.FromBase64String(galleryDetail.ImageStream));//Zip file inside filename } var pushStreamContent = new PushStreamContent((stream, content, context) => { zip.Save(stream); stream.Close(); }, "application/zip"); HttpResponseMessage httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK) { Content = pushStreamContent }; httpResponseMessage.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = result.FirstOrDefault().CityNm+ type + "Gallery.zip" }; httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/zip"); httpResponseMessage.Headers.AcceptRanges.Add("bytes"); ResponseMessageResult responseMessageResult = ResponseMessage(httpResponseMessage); return responseMessageResult; } } else { HttpResponseMessage httpResponseMessage = new HttpResponseMessage(HttpStatusCode.ExpectationFailed); ResponseMessageResult responseMessageResult = ResponseMessage(httpResponseMessage); return responseMessageResult; } }
Угловой боковой вызов ajax;
$http({ method: 'POST', url: dcsoConfig.DownloadGalleryzipfile + 'Images&galleryIds=' + downloadImageIds, responseType: 'arraybuffer', ContentType: 'application/json', Accept: 'application/zip', cache: false }).then( function(data, status, headers, config) { var a = document.createElement('a'); var blob = new Blob([data], { 'type': "application/zip" }); a.href = URL.createObjectURL(blob); a.download = "filename.zip"; a.click(); });