공통코드/첨부파일

파일업로드

예쁜꽃이피었으면 2022. 5. 25. 16:34

 

자바스크립트에서 확장자확인하기
function fn_fileCheck(){
	var fileName = $('#uploadFile').val();
	var extension = fileName.slice(fileName.indexOf(".")+1).toLowerCase();
	if(extension != "jpg" && extension != "jpeg" && extension != "gif" && extension != "png" && extension != "bmp"){
		$('#uploadFile').val("");
		attResult = '412';
		alert("첨부파일의 확장자는 jpg, jpeg, gif, png, bmp만 가능합니다.\n확장자에 맞게 다시 등록해주세요.");
		return false;
	}else{
		return true;
	}
	
}
ajax를 사용해 파일업로드 하기
function fn_attSave(){
	var form = $('#form')[0];
	var data = new FormData(form);
	
	$.ajax({
		type : 'post'
		,enctype:'multipart/form-data'
		,url:'/Attach'
		,data:data
		,processData:false
		,contentType:false
		//,success : function(data){
			//if(data == '412'){
			//	attResult = '412';
			//	$('#uploadFile').val("");
			//	alert("첨부파일의 확장자는 jpg, jpeg, gif, png, bmp만 가능합니다.\n확장자에 맞게 다시 등록해주세요.");
			//	return false;
		//	}
		}
	})
	
}
form type이 multipart일 때 컨트롤러

<form name="form" id="form" method="post" action="" enctype="multipart/form-data">..</form>

//@ResponseBody
@RequestMapping(value="/eAttach", method = RequestMethod.POST)
public String noticeAttach(HttpServletRequest request, @RequestParam("uploadFile") MultipartFile uploadFile) throws Exception{
	
	String realPath = request.getSession().getServletContext().getRealPath("/");
	String savePath = "upload\\";
	String path = realPath+savePath;
	String FileName = "";
	
	if(uploadFile.getSize() > 0) {  //첨부파일이 있으면
		FileName = CommonAttachUtil.fileUpload(path,uploadFile);
	}
	return FileName; //파일명만 받아서 데이터 처리하려고
}


--------------------------------------------------------------------------


import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import javax.imageio.ImageIO;

import org.springframework.web.multipart.MultipartFile;

public class CommonAttachUtil {
	
	public static int intUploadMaxSize = 100 * 1024 * 1024; // 최대 업로드 크기 [100MB] 
	
	//파일 업로드
	public static String fileUpload(String path,MultipartFile uploadFile) throws IllegalStateException, IOException {
		
		String result = "";
		String originalFile = uploadFile.getOriginalFilename();
		
		if(uploadFile.getSize() > CommonAttachUtil.intUploadMaxSize){
        	//이미지의 크기가 너무 크면 줄여서 저장
			result = CommonAttachUtil.imageResizeUpload(path,uploadFile);
		}else {
			//확장자 추출
			String originalFileExtension = originalFile.substring(originalFile.lastIndexOf("."));
			originalFileExtension = originalFileExtension.toLowerCase();
			if(originalFileExtension.equals(".jpg") || originalFileExtension.equals(".gif") 
					|| originalFileExtension.equals(".png") || originalFileExtension.equals(".jpeg")
					|| originalFileExtension.equals(".bmp")) {
							
				String storedFileName = CommonAttachUtil.getDate()+originalFileExtension;
			
				File file = new File(path);
				if(!file.exists()) {//폴더 없으면 생성
					file.mkdirs();
				}
				file = new File(path+storedFileName);
				uploadFile.transferTo(file);
				
				result = storedFileName;
				
			}else{
				result = "412";//"임의의 코드 : 허용되지 않은 확장자";
			}
		}
		return result;
	}
	
	//이미지 크기 줄이기
	public static String imageResizeUpload(String path,MultipartFile uploadFile) throws IOException {
		String result = "";
		//multipart -> file
		File file = new File(uploadFile.getOriginalFilename());
		uploadFile.transferTo(file);
		System.out.println(file.toString());
		
		Image image = ImageIO.read(new File(file.toString()));
		
		//이미지 원본크기
		int imageWidth = image.getWidth(null);
		int imageHeight = image.getHeight(null);
		int newWidth = 850;
		double ratio = (double)newWidth/(double)imageWidth;
		int imgW = (int)(imageWidth * ratio);
		int imgH = (int)(imageHeight * ratio);
		
		Image resizeImage = image.getScaledInstance(imgW, imgH,Image.SCALE_SMOOTH);
		
		//이미지 저장
		BufferedImage newImage = new BufferedImage(imgW,imgH,BufferedImage.TYPE_INT_RGB);
		Graphics GImage = newImage.getGraphics();
		String imgPath = path+CommonAttachUtil.getDate()+".jpg";
		GImage.drawImage(resizeImage, 0,0,null);
		GImage.dispose();
		ImageIO.write(newImage,"jpg",new File(imgPath));
		
		result = CommonAttachUtil.getDate()+".jpg";
		
		return result;
	}
		
	//첨부파일명 변경
    public static String getDate() {
        Calendar calendar           = Calendar.getInstance();
        java.util.Date time         = calendar.getTime();
        SimpleDateFormat simpleformat2   = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        String                  sformat2        = simpleformat2.format(time);
        return sformat2;
    }
}
반응형