기록
728x90

 

파일 다중 업로드  연관키워드 [ajax/spring boot/controller/view]

 

html

파일 여러개 옮기기 위해서 multiple="multiple"을 추가해주었다.

<html />
<form id="upload_frm" name="frm" method="post" action="/@@@" enctype="multipart/form-data"> <div class="filebox"> <label for="file" class="file-label">파일선택</label> <input type="file" id="file" name="file" multiple="multiple" accept=".csv" class="file"> </div> <!--<input type="submit" id="submit" value="저장" class="btn">--> </form>

 

javascript (ajax)

<javascript />
$("form").submit(function (e) { var fileCheck = document.getElementById("file").value; if (!fileCheck) { alert("파일을 첨부해 주세요"); return false; } e.preventDefault(); var formData = new FormData(this); $.ajax({ url: "../@@@", type: 'POST', enctype: 'multipart/form-data', data: formData, success: function (data) { alert(data); }, error: function (e) { alert("실패했습니다."); }, cache: false, contentType: false, processData: false, }); });

 

Controller (java)

<java />
@RestController public class UploadMileController { @Autowired UploadFileService uploadFileService; @PostMapping("/@@@") public ResponseEntity<?> uploadFile(MultipartHttpServletRequest req) throws NumberFormatException, ParseException { List<MultipartFile> fileList = req.getFiles("file"); return ResponseEntity.ok(uploadFileService.uploadFile(fileList)); } }

 

Service (java)

<java />
@Service @Slf4j public class UploadFileService { @Autowired MyRepository repo; public String uploadFile(List<MultipartFile> fileList) throws NumberFormatException, ParseException { String resultText = "알 수 없는 에러입니다."; for (MultipartFile file : fileList) { if (TYPE_CSV.equals(file.getContentType()) == false) { } String uploadFileName = StringUtils.cleanPath(file.getOriginalFilename()); System.out.println("파일사이즈 : " + file.getSize()); BufferedReader reader = null; try { reader = new BufferedReader(new InputStreamReader(file.getInputStream(), "UTF-8")); System.out.println("reader : " + reader); List<MileageCharge> milelist = new ArrayList<MileageCharge>(); int i = 0; for (String line = reader.readLine(); line != null; line = reader.readLine()) { // 첫번째 행 (헤더) 건너띄기 if (i == 0) { i++; continue; } String[] data = line.split(","); log.info("마일리지 업데이트 {} 번째 {}", i, line); // DB 데이터 손질 // csv읽어와서 처리 하는부분 작성 // 1행 : data[0] 이런식으로.. MyData data = new MyData(data[0], data[1]); try { // 한건씩 업데이트. // DB save 코드 작성, 여기서는 Repository 이용함. repo.save(data); } catch (Exception e) { log.error("업데이트 실패 {} 번째 {} \n Error message :{}", i, "값 확인 필요.", e); } i++; } reader.close(); } catch (IOException e) { } if (uploadFileName.length() != 0) { resultText = "정상적으로 등록되었습니다."; } else { resultText = "정상적인 파일이 아닙니다."; } } return resultText; } }

 

Repository (java)

<java />
public interface MyRepository extends JpaRepository<MyData, Integer>{ }

 

 

csv 파일 내용

<shell />
"이름", "지역" "홍길동", "서울" "김철수", "부산"

 

'SpringBoot' 카테고리의 다른 글

Spring Initailizr 사이트  (0) 2023.02.09
profile

기록

@데굴데구르르 림

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

2025, 이제 사내 컨플루언스에 모두 작성하게 되어서 업데이트가 잘 없을 것 같습니다..