2016-05-26 5 views
1

Мы пытаемся загрузить файл с веб-api v2, а затем либо использовать «Сохранить как», либо автоматически загружать в браузере любое решение будет хорошо, но не может заставить его работать.Angular загрузить pdf с веб-API 2

Что происходит в Chrome - ничего, ничего не делает В IE мы получаем приглашение: «Вы хотите разрешить этому веб-сайту открывать приложение на вашем компьютере?» нажмите «Разрешить», а затем ничего не произойдет вообще.

Вот код контроллера WebAPI:

[HttpGet] 
    [Route("{pdf}/{getPDF}")] 
    public async Task<IHttpActionResult> GetPDF() 
    { 
     var outputpath = HttpContext.Current.Server.MapPath("~/"); 
     HttpResponseMessage result; 

     using (FileStream stream = new FileStream(outputpath + "Inv_008618_180868_33687.pdf", FileMode.Open)) 
     { 
      result = new HttpResponseMessage(HttpStatusCode.OK) 
      { 
       Content = new StreamContent(stream),      
      }; 

      result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf"); 
      result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") 
      { 
       FileName = "Inv_008618_180868_33687.pdf", 
       Size = stream.Length 
      }; 

      return Ok(result); 

     } 
    } 

Я думаю, что приведенный выше код правильно не уверен на 100%, хотя, как размер файла очень мал.

Вот Угловой код:

getPDF: function() { 
      var scope = this; 
      var urlApi = 'http://localhost:59242/supplier/pdf/'; 

      return $http({ 
       url: urlApi, 
       responseType: 'arraybuffer' 
      }).then(function (response) { 
        var file = new Blob([response], { type: 'application/pdf' });       
        var fileURL = URL.createObjectURL(file); 

        var pdf = $sce.trustAsResourceUrl(fileURL); 

        //var element = angular.element('<a/>'); 
        //element.attr({ 
        // href: 'data:attachment/pdf;charset=utf-8,' + encodeURI(response), 
        // target: '_self', 
        // download: 'test.pdf' 
        //})[0].click(); 

        window.open(pdf); 
       } 

          return response.data; 
         }) 
         .catch(function (err) { 
         }) 
     } 

Я хотел бы поблагодарить Вас за ответ

+0

Что произойдет, если вы вызываете конструктор блоб с response.data : 'var file = new Blob ([response.data], {type: 'application/pdf'});'? – peco

+0

Привет, peco решил проблему, используя ngFileSaver – user142617

ответ

1

решить эту проблему с помощью ngFileSaver благодаря

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