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 |
---|