파이썬의 딕셔너리랑 비슷함!!
특징
key 값은 중복X 하나여야 한다!!
ex) 이름 : [예지,이라,재린,];
pair 값 저장 하려면 그때 Map을 사용한다!
거기서 중복된 값들은 저장하지 못하게 하고 싶으면 HashMap!
검색에 용이함!
여기서 put을 자주 씀!
list에서는 add로 추가 해줬지만
map에서는 put으로 키-값으로 저장!!
private Map<String, String> upload(HttpServletRequest request, HttpServletResponse response){
Map<String, String> articleMap = new HashMap<>(); // 중복 허용 안할라고 해쉬맵 쓴거임
// articleMap은 업로드된 파일 및 폼 필드의 데이터를 저장하기 위한 해시맵
String encoding = "utf-8";
File currentDirPath = new File(ARTICLE_IMAGE_REPO);
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(currentDirPath);
factory.setSizeThreshold(1024*1024);
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List items = upload.parseRequest(request);
for (int i=0; i <items.size(); i++) {
FileItem fileItem = (FileItem) items.get(i);
if(fileItem.isFormField()) { //파일이 아니묜
System.out.println(fileItem.getFieldName()+"="+fileItem.getString(encoding));
articleMap.put(fileItem.getFieldName(),fileItem.getString(encoding)); //이름과 값 articleMap에 저장
}else { // 파일이라면 파일 업로드 처리
System.out.println("파일 이름 : "+fileItem.getFieldName());
System.out.println("파일 크기 : "+fileItem.getSize());
if (fileItem.getSize()>0) { //파일 크기가 0보다 큰 경우에만 처리..
int idx = fileItem.getName().lastIndexOf("\\");
if(idx == -1) {
idx = fileItem.getName().lastIndexOf("/");
}
String fileName = fileItem.getName().substring(idx+1); //파일명 fileName 변수에 저장
System.out.println("파일명 : "+fileName);
articleMap.put(fileItem.getFieldName(), fileName);
File uploadFile = new File(currentDirPath+"\\"+fileName); //업로드된 파일이 저장될 경로를 설정
fileItem.write(uploadFile);
}
}
}
}catch (Exception e) {
e.printStackTrace();
}
return articleMap;
}