Fullstack-Study-241204-250625

커리큘럼(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;
}