공통코드/첨부파일
파일업로드
예쁜꽃이피었으면
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;
}
}
반응형