2013-11-26 5 views
5

나는 자원이 중 하나로 파일이 필요 :AngularJS와 ngResource는 다음 필드했다고 필드

description, picture 

그렇게하면 다중/형태로 URL에 해당 리소스를 전송하고, 수 있는가, 어떻게? 내가 퍼팅 시도했다

:

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

하지만이 형태의 데이터로 서버에 도착하지 않습니다. 그것은 헤더가 설정된 JSON과 같습니다 :

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

누구든지 이전에이 요구 사항을 충족 했습니까? 이것이 가능하다면 ...

고마워!

+0

단지 파일을 사용 .... AJAX를 사용하여 파일을 업로드하지 않습니다 콘텐츠 형식을 설정 업 로더 플러그인이 브라우저 간 지원을 원하는 경우 – charlietfl

답변

12

이 솔루션을 찾았습니다. FormData를 사용하여 제출해야합니다. 인터셉터로 사용할 수 있습니다. 나는

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

(이 내 ngResource의 저장 방법입니다) 여기 트랜스포머 같이 그것을 사용 :

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

변압기가 필요한 이유는 무엇입니까? – LeoG

+0

그렇지 않으면 파일을 보내지 않았습니다 ... 그냥 간단한 양식 필드를 보냈습니다. 그리고 어떤 변압기가, 공식 angularjs 페이지를 봐 –

+0

그게 효과가 :) ...... – LeoG