커리큘럼(12-30/변경)
01. Java
02. git
03. Database
04. Jsp [Server]
05. HTML,CSS
07. JS
06. 미니프로젝트-2W
08. SpringFramework , SrpingBoot (v)
09. React JS [Front-end]
10. 중간프로젝트 (1M)
11. Linux 명령어
12. AWS 클라우드
13. DevOps - Docker
14. App - Android
15. 최종프로젝트 (1M)
스프링 부트
파일업로드
############### File Upload Configuration
# Enable file upload
spring.servlet.multipart.enabled=true
# Maximum total upload size per request
spring.servlet.multipart.max-request-size=50MB
# Maximum file size per individual file
spring.servlet.multipart.max-file-size=10MB
# Temporary location for uploaded files (not set)
spring.servlet.multipart.location=Temporary storage path
#upload Path
com.coding404.myweb.upload.path=C:/Users/Windows/Desktop/upload
<insert id="productRegist" parameterType="ProductVO" useGeneratedKeys="true" keyProperty="prodId">
insert into PRODUCT(prod_enddate,prod_category,prod_writer
,prod_name,prod_price,prod_count
,prod_discount,prod_purchase_yn,
prod_content,prod_comment)
values(#{prodEnddate},#{prodCategory},#{prodWriter},
#{prodName},#{prodPrice},#{prodCount},
#{prodDiscount},#{prodPurchaseYn},#{prodContent},#{prodComment})
</insert>
@Override
public boolean productRegist(ProductVO vo, List<MultipartFile> files) {
// 상품 인서트
boolean result = productMapper.productRegist(vo);
// 2. 업로드
for(MultipartFile file:files){
String originName = file.getOriginalFilename();
String filename = originName.substring(originName.lastIndexOf("/") + 1);
UUID uuid = UUID.randomUUID(); // 16진수형태의 랜덤문자열을 반환
String filepath = makeFolder();
String path = uploadPath +"/"+ filepath + "/" +uuid + "_" + filename ; // 업로드패스
try {
File saveFile = new File(path);
file.transferTo(saveFile); // 파일업로드를 처리
} catch (Exception e) {
e.printStackTrace();
}
// 2. upload테이블에 경로를 저장
// selectKey, generateKey방식을 이용해서 키값을 구해옴
// selectKey : 인서트 넣기 전에 사용자가 지정한 select쿼리를 날릴 수 있는 구문
// generateKey - 인서트 넣기전에 인서트한
result = productMapper.productRegistFile(ProductUploadVO.
builder().
filename(filename).
filepath(filepath).
uuid(uuid.toString()).
prodId(vo.getProdId()).
prodWriter(vo.getProdWriter()).
build());
} // end for
return result;
}