2016-05-26 18 views
1

Web api v2からファイルをダウンロードしようとしていますが、「Save As」を使用するか、ブラウザで自動的にダウンロードしても問題ありません。Web APIを使用した角型ダウンロードpdf 2

Chromeで何が起こっているのですか、何もしません IEでは、このウェブサイトがあなたのコンピュータでアプリケーションを開くことを許可しますか? [許可]をクリックすると、何も起こりません。私は上記のコードは、ファイルサイズが非常に小さいといえ、100%確か正しくないと思い

[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); 

     } 
    } 

:ここ

はWebAPIのコントローラコードです。ここで

は角度コードです:

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

を使用して問題を解決を返信するためにあなたに感謝したいと思います: 'var file = new Blob([response.data]、{type: 'application/pdf'});'? – peco

+0

こんにちはpecoはngFileSaverを使用して問題を解決しました – user142617

答えて

1

あなたはresponse.dataとブロブコンストラクタを呼び出すとどうngFileSaverのおかげ

関連する問題