angularjs - पीडीएफ दस्तावेज़ को लोड करने में असफल-कांतिर जेएस-ब्लॉब



pdf blob (1)

मैं वेब एपीआई से पीडीएफ दस्तावेज प्राप्त करने की कोशिश कर रहा हूं, और कोयोनर ऐप में दिखाना चाहता हूं। "पीडीएफ दस्तावेज़ त्रुटि लोड करने में विफल" हो रही है मैंने " एंजरीआरजेएस: डिस्प्ले ब्लॉब (.पीडीएफ) को एक कोणीय ऐप में " पोस्ट किया है जबकि, " एएपी.एल.टी.नेट वेब एपीआई पद्धति से एंजरीजेएस का उपयोग करके फ़ाइल डाउनलोड करें " पोस्ट का पालन ​​करके मैं एक ही फाइल को सफलतापूर्वक डाउनलोड कर सकता हूं।

ऐसा लगता है कि मैं "चंकेड ट्रांसफर एन्कोडेड" फ़ाइल को प्राप्त कर रहा हूं। कोणीय एप में दिखाने का प्रयास करते समय किसी तरह यह डीकोड नहीं हो रहा है कृपया सलाह दें।

वेब एपीआई कोड:

HttpResponseMessage result = null;
        var localFilePath = @"C:\Test.pdf";

        if (!File.Exists(localFilePath))
        {
            result = Request.CreateResponse(HttpStatusCode.Gone);
        }
        else
        {// serve the file to the client
            result = Request.CreateResponse(HttpStatusCode.OK);
            result.Content = new StreamContent(new FileStream(localFilePath, FileMode.Open, FileAccess.Read));                
            result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
            result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
            result.Content.Headers.ContentDisposition.FileName = "Test.pdf";
            result.Content.Headers.Add("x-filename", "Test.pdf");
        }

        return result;

कोणीय नियंत्रक:

   myModule.controller("pdfviewerController", function ($scope, $http, $log, $sce) {
$http.post('/api/Sample/GetTestFile', {responseType:'arraybuffer'})
 .success(function (response) {      
  var file = new Blob([response], { type: 'application/pdf' });
  var fileURL = URL.createObjectURL(file);
  $scope.content = $sce.trustAsResourceUrl(fileURL);            
 });
});

एचटीएमएल टेम्पलेट:

<embed ng-src="{{content}}" style="width:200px;height:200px;"></embed>

समस्या नियंत्रक में है {responseType:'arraybuffer'} बहुत आवश्यक है $http.get - यह दूसरा पैरामीटर होना चाहिए $http.post - यह तीसरा पैरामीटर होना चाहिए।

उपरोक्त मामले में, मैं $ http.post का उपयोग कर रहा हूं और मैंने दूसरे पैरामीटर के रूप में {responseType:'arraybuffer'} किया है।

$http.post('/api/Sample/GetTestFile', {responseType:'arraybuffer'})

सही कोड

$http.post('/api/Sample/GetTestFile','', {responseType:'arraybuffer'})





chunked-encoding