Member 12069688 Ответов: 0

Получение ошибки "сжатая(заархивированная) папка недопустима" при получении 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();
            });

0 Ответов