각도를 사용하여 파일을 보내는 것이 왜 어려운가요? [닫은]


18

파일 (매우 큰 파일)을 서버로 보내야합니다. 내가 가진 옵션과 수행 방법을 연구 중입니다. angular + express + nodejs를 사용하고 있습니다.

간단한 양식을 사용하면 문제없이 multer를 사용하여 서버에서 파일을 잡을 수 있습니다. 매우 간단합니다. html은 대상 등을 지정하는 형식 일 뿐이며 모든 것이 작동합니다. nodejs 코드도 매우 간단하고 간단합니다.

각도를 사용하려고하면 모든 것이 엄청나게 복잡해집니다. 즉, 지시문을 사용해야하지만 여전히 서버에 문제가 있습니다. 내가 말했듯이 multer를 사용하고 있는데, 이는 데이터가 "multipart / form-data"이어야하고 서버 "Error : Multipart : Boundary not found"에서 가져옵니다.

파일을 각도로로드하는 많은 모듈이 있습니다. 이는 둘 이상의 솔루션에서 반복되는 문제임을 보여줍니다. 이제 Stack Overflow에서 요청 했기 때문에 코드를 게시하고 싶지 않습니다 . 내 질문은 더 미묘합니다.

간단한 형태로 무엇을 할 수 있습니까? 각도가 너무 복잡합니까? 나는 그것을 나쁜 방식으로 의미하지 않습니다. 나는 '이해하고 싶다'는 방식으로 그것을 의미합니다.


이것은 스택 오버플의 최근 질문 과 어떻게 관련이 있습니까? " '경계를 찾을 수 없음'오류를 어떻게 해결하고 그 의미는 ..."
gnat

2
그렇기 때문에 질문에 링크를 넣습니다. 그러나 여기서 나는 문제를 해결하고 싶지 않습니다. 나는 왜 그것이 왜 문제인지 알고 싶습니다.
cauchy

답변:


21

Angular는 단일 페이지 응용 프로그램 용이며 AJAX를 사용하여 양식을 보내 페이지를 다시로드하지 않도록합니다. AJAX를 사용하여 멀티 파트 양식을 보내려면 브라우저가 다음을 지원해야합니다 FormData(IE10 +) : http://caniuse.com/#search=FormData

https://developer.mozilla.org/en-US/docs/Web/API/FormData

ngModelinput [type = "file"]에서는 작동하지 않으므로 직접 지시문을 작성해야합니다. 사용자 고유의 지시문은 간단해야합니다. 변경시 File범위 의 객체를 업데이트 하십시오.

양식을 전송하면 만들 FormData개체를하고 사용에 파일을 추가 FormData.set하거나 FormData.append. 당신은 당신의 FormData를 보낼 수 있습니다 $http또는 $resource, 당신은 콘텐츠 형식과 경계를 설정하는 브라우저에 의존하고 있습니다.

var formData = new FormData();
formData.append('file', $scope.file);
$http.post('yourUrl', formData, {
   transformRequest: angular.identity,
   headers: {'Content-Type': undefined}
}).then(function () {
   // ...
});

angular.identity Angular가 데이터에서 직렬화와 같은 작업을 수행하지 못하게합니다.

나는이 기사를 추천합니다 : https://uncorkedstudios.com/blog/multipartformdata-file-upload-with-angularjs


3
파일 지시문이 왜 각도로 남아 있는지 궁금합니다!
user237944
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.