파일 업로드 중 문제가 발생하여 질문드립니다. (2)
- 작성자 :
- 김*섭
- 작성일 :
- 2019-07-19 12:14:08
- 조회수 :
- 2,440
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
EgovFrameWork 3.8버전, 톰캣 버전은 8.5 입니다.
스마트에디터와 연동 중, 사진 파일을 서버에 업로드 하는 과정에서 에러가 발생합니다.
위에 파일로 첨부한 코드.PNG에 사진을 업로드 하는 부분에서
파일이 정상적으로 넘어오지 않아 While 문이 돌지 않고,
이에 따라 0Byte 파일이 만들어 집니다.
Cross-site Scripting 방지처리를 하게 되면 request를 통한 파일 업로드중 문제가 생긴다는 부분을 알게 되어
위 첨부한 이미지와 같이 세팅을 진행했습니다. ( 세팅&에러.PNG )
그럼에도 문제가 해결 되지 않고, 세팅&에러.PNG의 Error 부분과 같은 에러가 발생하면서 파일업로드가 진행되지 않습니다.
위 첨부한 이미지와 같은 세팅 외에 더 해야 할 세팅이 있는지 질문드립니다.
감사합니다.
==================================================================
안녕하세요.
표준프레임워크센터 입니다.
security 모드에서 csrf="true" 로 사용하시는 듯합니다.
이경우 HTML에 다음 태그가 필요하고
서브밋시에 반드시 전달이 되어야 합니다.
<input type="hidden" name="_csrf" value="~~~~~~~">
Ajax를 사용하여 이런 부분이 여의치 않다면
Controller에서 CSRF 토큰값을 받아서 처리하실수 있는게 아닌가 싶습니다.
CsrfToken token = (CsrfToken)request.getAttribute(CsrfToken.class.getName());
System.out.p rintln("===>>> getParameterName() = "+token.getParameterName());
System.out.p rintln("===>>> getToken() = "+token.getToken());
해당 값을 활용하여서 처리가 가능할듯 합니다.
확인 부탁드립니다.
감사합니다.
=====================================================
csrf = "false" 로 설정되어 있습니다....
이 외에 추가적인 세팅에서 문제가 있는건지 궁긍합니다.
에러 내용이 깨져서 나오는것을 확인하고 처음엔 인코딩 문제라고 생각했었는데,
Cross-site Scripting 방지처리와 관련되어 있다는 결과를 얻어서, 혹시 인코딩과는 전혀 관련이 없는 부분인지도 조금 궁금합니다.
추가적으로 시큐리티 설정부분 첨부합니다.
감사합니다.
스마트에디터와 연동 중, 사진 파일을 서버에 업로드 하는 과정에서 에러가 발생합니다.
위에 파일로 첨부한 코드.PNG에 사진을 업로드 하는 부분에서
파일이 정상적으로 넘어오지 않아 While 문이 돌지 않고,
이에 따라 0Byte 파일이 만들어 집니다.
Cross-site Scripting 방지처리를 하게 되면 request를 통한 파일 업로드중 문제가 생긴다는 부분을 알게 되어
위 첨부한 이미지와 같이 세팅을 진행했습니다. ( 세팅&에러.PNG )
그럼에도 문제가 해결 되지 않고, 세팅&에러.PNG의 Error 부분과 같은 에러가 발생하면서 파일업로드가 진행되지 않습니다.
위 첨부한 이미지와 같은 세팅 외에 더 해야 할 세팅이 있는지 질문드립니다.
감사합니다.
==================================================================
안녕하세요.
표준프레임워크센터 입니다.
security 모드에서 csrf="true" 로 사용하시는 듯합니다.
이경우 HTML에 다음 태그가 필요하고
서브밋시에 반드시 전달이 되어야 합니다.
<input type="hidden" name="_csrf" value="~~~~~~~">
Ajax를 사용하여 이런 부분이 여의치 않다면
Controller에서 CSRF 토큰값을 받아서 처리하실수 있는게 아닌가 싶습니다.
CsrfToken token = (CsrfToken)request.getAttribute(CsrfToken.class.getName());
System.out.p rintln("===>>> getParameterName() = "+token.getParameterName());
System.out.p rintln("===>>> getToken() = "+token.getToken());
해당 값을 활용하여서 처리가 가능할듯 합니다.
확인 부탁드립니다.
감사합니다.
=====================================================
csrf = "false" 로 설정되어 있습니다....
이 외에 추가적인 세팅에서 문제가 있는건지 궁긍합니다.
에러 내용이 깨져서 나오는것을 확인하고 처음엔 인코딩 문제라고 생각했었는데,
Cross-site Scripting 방지처리와 관련되어 있다는 결과를 얻어서, 혹시 인코딩과는 전혀 관련이 없는 부분인지도 조금 궁금합니다.
추가적으로 시큐리티 설정부분 첨부합니다.
감사합니다.
A
안녕하세요.
표준프레임워크센터 입니다.
공통컴포넌트 v3.8 All-in-one 최신버전에서 Ajax를 사용한
파일업로드를 테스트 하였습니다.
센터에서 테스트한 결과 정상적으로 파일이 업로드 되었습니다.
Javascript쪽은 다음 코드를 사용하였습니다.
function fileSubmit() {
var formData = new FormData($("#fileForm")[0]);
$.ajax({
type : 'post',
url : '<c:url value='/utl/wed/insertImage.do'/>',
data : formData,
processData : false,
contentType : false,
success : function(html) {
alert("파일 업로드하였습니다.");
},
error : function(error) {
alert("파일 업로드에 실패하였습니다.");
console.log(error);
console.log(error.status);
}
});
}
업로드 파일이 처리되는 URL은 /utl/wed/insertImage.do 입니다.
실제 업로드는 EgovFileUploadUtil를 사용하고 있으니 참고 하시기 바랍니다.
커스텀 하시는 경우 다양한 예외가 발생할수 있는데요.
현재 테스트 하시는 개발환경에서
웹방화벽의 영향이 있는지
혹은 설치된 보안 툴에 영향을 받는지도 확인이 필요할것으로 보입니다.
참고로 자체 테스트시 톰캣 버전은 8.0이며
별다른 설정을 수정하지 않고 진행했습니다.
감사합니다.
표준프레임워크센터 입니다.
공통컴포넌트 v3.8 All-in-one 최신버전에서 Ajax를 사용한
파일업로드를 테스트 하였습니다.
센터에서 테스트한 결과 정상적으로 파일이 업로드 되었습니다.
Javascript쪽은 다음 코드를 사용하였습니다.
function fileSubmit() {
var formData = new FormData($("#fileForm")[0]);
$.ajax({
type : 'post',
url : '<c:url value='/utl/wed/insertImage.do'/>',
data : formData,
processData : false,
contentType : false,
success : function(html) {
alert("파일 업로드하였습니다.");
},
error : function(error) {
alert("파일 업로드에 실패하였습니다.");
console.log(error);
console.log(error.status);
}
});
}
업로드 파일이 처리되는 URL은 /utl/wed/insertImage.do 입니다.
실제 업로드는 EgovFileUploadUtil를 사용하고 있으니 참고 하시기 바랍니다.
커스텀 하시는 경우 다양한 예외가 발생할수 있는데요.
현재 테스트 하시는 개발환경에서
웹방화벽의 영향이 있는지
혹은 설치된 보안 툴에 영향을 받는지도 확인이 필요할것으로 보입니다.
참고로 자체 테스트시 톰캣 버전은 8.0이며
별다른 설정을 수정하지 않고 진행했습니다.
감사합니다.