2013-11-26 4 views
5

Ich habe Ressource, die folgenden Felder hat:AngularJS ngResource braucht Datei als eines der Felder haben

description, picture 

Ist es möglich, diese Ressource zu senden als multipart/form URL, und wenn ja, wie?

Ich habe versucht Putting:

app.factory('resource_name', ['$resource', function($resource) { 
return $resource('<url> ', 
    { 
      <params_for_url> 
    }, 
     save: { 
      method: "POST", 
      headers: { 
       "Content-Type": "multipart/form-data;" 
      } 
     }, 

aber nicht bekommen auf dem Server als form-data. Es geht wie JSON mit Kopf gerade gesetzt:

{ 
description: "gtrdgf", 
picture: { 
    lastModifiedDate:2013-11-26T20:42:13.000Z, 
    name: "suggested_pokes.png" 
    size: 32995 
    type: "image/png" 
    webkitRelativePath: "" 
} 

Hat jemand vor dieser Anforderung erfüllt? Wenn das überhaupt möglich ist ...

Danke!

+0

nur Inhaltstyp Einstellung nicht Datei mit AJAX laden .... eine Datei verwenden Uploader-Plugin, wenn Browserunterstützung durchqueren soll – charlietfl

Antwort

12

Ich habe eine Lösung für diese gefunden. Sie müssen FormData verwenden, um es zu übermitteln. Sie können es als Interzeptor verwenden. Ich habe es wie folgt aus (das ist meine Speichermethode von ngResource)

  save: { 
       method: 'POST', 
       transformRequest: formDataObject, 
       headers: {'Content-Type':undefined, enctype:'multipart/form-data'} 
      }, 

und hier ist Transformator:

 function formDataObject (data) { 
      var fd = new FormData(); 
      angular.forEach(data, function(value, key) { 
       fd.append(key, value); 
      }); 
      return fd; 
     } 
+0

Was ist der Transformator ist es erforderlich? – LeoG

+0

sonst hat es die Datei nicht gesendet ... es hat nur einfache Formularfelder gesendet. und was Transformator ist, schauen Sie auf offiziellen angularjs Seiten –

+0

thx es funktionierte :) ...... – LeoG

Verwandte Themen