$ http

2015-06-28 2 views
5

kullanarak angularjs gelen sıkıştırılmış sonrası isteği gönder ben angularjs üzerinde $ http kullanıyorum ve ben göndermek için oldukça büyük bir isteğim var. Sunucu içeriğinin sıkıştırma için uygun bir istek başlığını

content = "I'm a very long content string!" 
$http.post content, url, 'gzip' 

ve sahip otomatik gzip'lenmiş sonrası isteği içeriğini ve ekleyin bilecek böylece: orada böyle bir şey yapmak için bir yol olmadığını

merak ediyorum ve yanımda içeriği gzip olabilir kontrolörü

için doğru geçmek ve yeniden açın elle sunucuda ama bunu otomatik olarak yapmak için bir yol olması gerektiğini düşündük. Var mı? Sunucu dosyası ilk unziped gerekip gerekmediğini içerik bir dosyadır ve karar böylece modeline bir parametre verebilir böyle

+0

misiniz amaçlarınıza bu iş? http://onehungrymind.com/zip-parsing-jszip-angular/ İşte jszip: https://stuk.github.io/jszip/ – Boris

+0

Bu harika bir paket, ama müşteriye bir zip açmakla ilgili. ve benim metin istemciye posta isteği – Yossale

+0

Tamam sıkıştırılmış istiyorum; belki js-Sıkıştırılmalı işe yarayabilecek: https://github.com/dankogai/js-deflate Diğerleri de bu ilgilenen ancak istemci-sunucu iletişimi kolay yapmaz görünüyor : https://stackoverflow.com/questions/424917/why-cant-browser-send-gzip-request – Boris

cevap

0

, this sonrası bakın

function Ctrl($scope, $http) { 

    //a simple model to bind to and send to the server 
    $scope.model = { 
     gzip: true, 
     file: true 
    }; 

    //an array of files selected 
    $scope.files = []; 

    //listen for the file selected event 
    $scope.$on("fileSelected", function (event, args) { 
     $scope.$apply(function() {    
      //add the file object to the scope's files collection 
      $scope.files.push(args.file); 
     }); 
    }); 

    //the save method 
    $scope.save = function() { 
     $http({ 
      method: 'POST', 
      url: "/Api/PostStuff", 
      //IMPORTANT!!! You might think this should be set to 'multipart/form-data' 
      // but this is not true because when we are sending up files the request 
      // needs to include a 'boundary' parameter which identifies the boundary 
      // name between parts in this multi-part request and setting the Content-type 
      // manually will not set this boundary parameter. For whatever reason, 
      // setting the Content-type to 'false' will force the request to automatically 
      // populate the headers properly including the boundary parameter. 
      headers: { 'Content-Type': false }, 
      //This method will allow us to change how the data is sent up to the server 
      // for which we'll need to encapsulate the model data in 'FormData' 
      transformRequest: function (data) { 
       var formData = new FormData(); 
       //need to convert our json object to a string version of json otherwise 
       // the browser will do a 'toString()' on the object which will result 
       // in the value '[Object object]' on the server. 
       formData.append("model", angular.toJson(data.model)); 
       //now add all of the assigned files 
       for (var i = 0; i < data.files; i++) { 
        //add each file to the form data and iteratively name them 
        formData.append("file" + i, data.files[i]); 
       } 
       return formData; 
      }, 
      //Create an object that contains the model and files which will be transformed 
      // in the above transformRequest method 
      data: { model: $scope.model, files: $scope.files } 
     }). 
     success(function (data, status, headers, config) { 
      alert("success!"); 
     }). 
     error(function (data, status, headers, config) { 
      alert("failed!"); 
     }); 
    }; 
};