티스토리 뷰

//파일 업로드 경로는 복잡하게 하지 말고 한번의 경로에 하는것이 좋다. 디버깅하기 좋게. 모든 코딩은 디버깅 하기 쉽게 해야 한다.

//그리고 DB table에 파일 경로와 파일명이 들어갈때 전체(Full) 경로와 파일명으로 들어가야 한다.

//그래야 파일 path가 바뀌어도 이전거의 파일 다운에 문제가 없다.

//일부만 들어가는게 있던데 그건 의미 없다. 경로를 바꿔버리면 제대로 동작하지 않기에..


//jsp에서 등록 버튼이 클릭됐을때


$("#btnSave").click(function(){

if(confirm("저장 하시겠습니까?")){

if(NXOperators["dextuploadnx_instance"].Count == 0){

var strParam = $("form").serialize();

serverCall("/server/insertForm", strParam, callBackSave);

}else{

OnCallUploadStart();

}

}

}


function OnCallUploadStart(){

NXOperators["dextuploadnx_instance"].UploadURL = "/server/insertForm";

NXOperators["dextuploadnx_instance"].UploadStart();

}


function callbackSave(result){

if(result == "true"){

alert("OK");

self.close();

}else{

alert("Error");

}

}


@Controller

public class MyController{


@Autowired

MyService myService;


@RequestMapping("/server/insertForm")

public ModelAndView insertForm(HttpServletRequest request) throws Exception{

String result = "";

ModelAndView mv = new ModelAndView("/template");

try{

Map<String, Object> map = myService.insertForm(request);

mv.addObject("json", "true");

}catch(Exception e){

mv.addObject("json","false");

}

}

}


public insertface MyService{

public Map insertForm(HttpServletRequest request) throws Exception;

}


//공통적으로 쓰는것은 Service로 만들어 다른 컨트롤러에서 쓸 수 있게끔 하면 될것 같다.

//그리고 관행처럼 간단한것도 무조건 Service를 만들어서 쓰는데

//내 생각은 간단한것들은 구지 Service를 만들지 말고 Controller에서 Mapper 호출해서 끝내는게 좋은것 같다.

//디버깅 할때 구지 Controller -> Service -> Mapper 가는 시간만 더 걸린다.

//Service에서 코딩할일이 없고 단지 Mapper만 호출하는 케이스는 그냥 Controller에서 바로 Mapper 호출해서 쓰는게 어떨까 싶다.

//그래야 코딩도 한눈에 보이고...


@Service

public class ServiceImpl implements Service{


public Map insertForm(HttpServletRequest request) throws Exception{


//파일 업로드 경로

@Value("#{contextProperties['fileUploadPath']}")


MultipartHttpServletRequest multipart = null;

MultipartFile multipartFile = null;

String fileUploadPath=fileUploadPath;


String orgFileName = "";

long fileSize = 0L;


if(request.getContentType() != null && request.getContentType().indexOf("multipart/form-data") > -1){

multipart = (MultipartHttpServletRequest)request;

List<MultipartFile> files = multipart.getFiles("DEXTUploadNX");

for(int j=0; j<files.size(); j++){

multipartFile = files.get(j);

if(multipartFile.isEmpty() == false){

String orgFileName = multipartFile.getOriginalFilename();

int fileSize = multipartFile.getSize();

String newFileName = "중복방지된 파일명";

file = new File(fileUploadPath+newFileName);

multipartFile.transferTo(file);

//기타 파일 정보를 저장한다.

//orgFileName, fileSize, 등등..

}

}

}

}

}

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함