1

Ich habe dieses Stück Code wie unten in meinem MVC-Controller img hochladen und in Ordner speichern:MVC, Angularjs, HttpPostedFileBase.SaveAs ist erfrischende Seite?

public ActionResult UploadLogo(HttpPostedFileBase file) 
    { 


     var path = ""; 
     if (file != null) 
     { 

      if (file.ContentLength > 0) 
      { 
       if (Path.GetExtension(file.FileName).ToLower() == ".jpg" || 
        Path.GetExtension(file.FileName).ToLower() == ".png" || 
        Path.GetExtension(file.FileName).ToLower() == ".gif" || 
        Path.GetExtension(file.FileName).ToLower() == ".jpeg") 
       { 

        path = Server.MapPath("~/GroupApp/Content/Images/"); 

        if (!Directory.Exists(path)) 
        { 
         Directory.CreateDirectory(path); 
        } 
        path = Path.Combine(path, file.FileName); 

        file.SaveAs(path); 

        return new HttpStatusCodeResult(HttpStatusCode.OK); 
       } 
      } 
     } 
     return new HttpStatusCodeResult(HttpStatusCode.InternalServerError, ""); // :(
    } 

A dies in AngularJS Service ist mein Code:

groupApp.factory('uploadLogo', ['$http', '$q', '$timeout', function ($http, $q, $timeout) { 


var _uploadLogo = function (file) { 

    var deferred = $q.defer(); 
    var controllerQuery = "groupApi/uploadLogo"; 

    $timeout(function() { 
     deferred.notify(true); 
    }, 0) 


    var _file = new FormData(); 


    _file.append('file', file, file.name); 

    $http.post(controllerQuery, _file, { 
     transformRequest: angular.identity, 
     headers: { 'Content-Type': undefined }, 
     enctype: 'multipart/form-data' 

    }) 
     .then(function (result) { 


      $timeout(function() { 
       deferred.resolve(result); 
      }, 200); 

     }, 
      function (error) { 

       deferred.reject(error); 
      }); 
    return deferred.promise; 

}; 


return { 
    uploadLogo: _uploadLogo, 
} 

}]); 

und was Ich sage, es funktioniert großartig, aber warum nach der Ausführung dieses Codes ist die gesamte Ansicht erfrischend?

Ich habe keine erfrischenden oder Ansicht ändern Funktionen in meinem Winkel Controller.

Wenn ich Code debuggen, und ich break Punkt in Zeile: 'file.SaveAs (Pfad)' Ich bemerkte, dass nach dieser Seite beginnt, sich neu zu laden.

Könnte mir jemand erklären warum? Wie verhindere ich das erneute Laden der Seite?

Antwort

0
Can you remove the timeout function and access the result directly. 
Like this 

$http.post(controllerQuery, _file, { 
     transformRequest: angular.identity, 
     headers: { 'Content-Type': undefined }, 
     enctype: 'multipart/form-data' 

    }) 
     .then(function (result) { 
       deferred.resolve(result); 
     }, 
      function (error) { 

       deferred.reject(error); 
      }); 
    return deferred.promise; 

}; 
+0

Sicher, ich bin für die Prüfung nur $ timeout mit (Laden cog). – Piosek