2014-09-09 4 views
5

Hoffentlich kann jemand dabei helfen.flow.js Upload-Datei auf Klick

Grundsätzlich verwenden wir ng-flow https://github.com/flowjs/ng-flow, um Drag & Drop Objekte hochladen zu können. Wir verwenden auch MVC 4.

All zu arbeiten scheint, als sollten wir jedoch diese anpassen möchten, so dass

  1. Artikel in die Upload-Box gezogen werden und in ihrem Umfang gespeichert (als es ist jetzt) ​​
  2. Artikel nicht direkt hochgeladen, bis eine Taste

geklickt wurde: Was haben wir bisher versucht? : -

in der Config, haben wir das Ziel, so deaktiviert, dass es nicht sofort

.config(['flowFactoryProvider', function (flowFactoryProvider) { 
flowFactoryProvider.defaults = { 
    target: '', 
    permanentErrors: [500, 501], 
    maxChunkRetries: 1, 
    chunkRetryInterval: 5000, 
    simultaneousUploads: 1 
}; 

auf der aktuellen Seite nicht lädt, haben wir eine Taste, mit einem ng-Klick erstellt, das wird passieren die flow.files

<input type="button" value="Click Me" ng-click="uploadme($flow.files)"> 

in der Steuerung, haben wir die Funktion, uploadme, die fließt als Paramater annimmt. Looping durch diese Parameter um und schreiben jede "Datei" auf den Upload-Controller

$scope.uploadme= function (flows) 
{ 
    angular.forEach(flows, function (flow) { 
     var fd = new FormData(); 
     fd.append("file", flow); 
     $http.post("upload", fd, { 
      withCredentials: true, 
      headers: {'Content-Type': undefined }, 
      transformRequest: angular.identity 
     }) 
    }); 

} 

MVC-Controller, 'upload'. dies wird jedoch aufgerufen, Datei ist immer Null

public ActionResult upload(HttpPostedFileBase file) 
    { 
     if (file.ContentLength > 0) 
     { 
      var fileName = Path.GetFileName(file.FileName); 
      var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName); 
      file.SaveAs(path); 
     } 
     return View(); 
    } 

Gibt es etwas, das wir vermissen? Oder gibt es einen anderen Weg, dies zu erreichen?

+0

Ich bin auf der Suche nach einer ähnlichen Antwort. Es ist ein bisschen frustrierend, weil die "grundlegende" Demo aus dem ng-flow github repo genau das tut, obwohl es genauso gemacht wird wie meine Implementierung. Meine Version lädt die Dateien sofort hoch, wenn sie fallen gelassen werden, während sie solange gehalten werden, bis auf die Schaltfläche geklickt wird. Haben Sie das jemals gelöst? – Askdesigners

+0

@Askdesigners Hallo, ja gelöst, siehe Antwort, hoffe das hilft. – Simon

Antwort

10

es geschafft, dies zu lösen ...

die Linie von div

Tag entfernen
flow-files-submitted="$flow.upload()" 

dann Onclick eines Knopfes, übergeben in $ fließen in als Paramater

ng-click="InsertItems($flow)" 

Javascript :

$scope.InsertItems = function(e) 
{ 
//Do what you need to do 
e.upload(); 
} 
+1

Ok cool! Ich werde es versuchen. Vielen Dank! – Askdesigners