• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

FileController가 어떻게 적혔는지 좀 더 확인해보고싶습니다.

22.01.06 17:24 작성 조회수 154

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 
영상에서 보면 클래스가 40번대 줄에서 시작되는걸로 보아 영상에 보이는 @api 어노테이션 위에도 몇가지 어노테이션이 더 있는걸로 예상은 되는데 영상에는 소스가 나오지 않아 영상을 따라가는데 문제가 있습니다 ㅜㅜ
 
그리고 추가로, resources - globals 폴더 내에 세가지 properties 파일을 생성해주셨는데, global-local.properties 외에는 나머지 파일들이 보이지 않아 영상대로 따라기가 어려움이 있습니다!

답변 1

답변을 작성해보세요.

0

안녕하세요 koyoungil97 개발자님,

 

제가 가지고 있는 소스를 올려드릴게요.

조금 달라졌을수도 있지만, 아마 비슷한 소스일거에요,

만약에 다른부분이있거나 컴파일 에러나는 소스가 있다면

처음엔 힘들지만, 응용해서 수정하시거나 추가하셔서 해결해보시면 스킬업에 도움이되실수도있어요

 

 

package kr.co.songjava.mvc.controller;

 

import java.io.File;

import java.io.IOException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.UUID;

 

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.RestController;

import org.springframework.web.multipart.MultipartFile;

 

import io.swagger.annotations.Api;

import io.swagger.annotations.ApiOperation;

import kr.co.songjava.configuration.GlobalConfig;

import kr.co.songjava.configuration.exception.BaseException;

import kr.co.songjava.configuration.http.BaseResponse;

import kr.co.songjava.configuration.http.BaseResponseCode;

import kr.co.songjava.mvc.parameter.UploadFileParameter;

import kr.co.songjava.mvc.service.UploadFileService;

 

@RestController

@RequestMapping("/file")

@Api(tags = "파일 API")

public class FileController {

 

Logger logger = LoggerFactory.getLogger(getClass());

 

@Autowired

private GlobalConfig config;

 

@Autowired

private UploadFileService uploadFileService;

 

/**

* 업로드 리턴.

* @return

*/

@PostMapping("/save")

@ApiOperation(value = "업로드", notes = "")

public BaseResponse<Boolean> save(@RequestParam("uploadFile") MultipartFile multipartFile) {

logger.debug("multipartFile : {}", multipartFile);

if (multipartFile == null || multipartFile.isEmpty()) {

throw new BaseException(BaseResponseCode.DATA_IS_NULL);

}

// 날짜폴더를 추가

String currentDate = new SimpleDateFormat("yyyyMMdd").format(Calendar.getInstance().getTime());

String uploadFilePath = config.getUploadFilePath() + currentDate + "/";

logger.debug("uploadFilePath : {}", uploadFilePath);

String prefix = multipartFile.getOriginalFilename().substring(

multipartFile.getOriginalFilename().lastIndexOf(".") + 1, multipartFile.getOriginalFilename().length());

String filename = UUID.randomUUID().toString() + "." + prefix;

logger.info("filename : {}", filename);

File folder = new File(uploadFilePath);

// 폴더가 없다면 생성

if (!folder.isDirectory()) {

folder.mkdirs();

}

String pathname = uploadFilePath + filename;

String resourcePathname = config.getUploadResourcePath() + currentDate + "/" + filename;

File dest = new File(pathname);

logger.debug("dest : {}", dest);

try {

multipartFile.transferTo(dest);

// 파일업로드 된 후 DB에 저장

UploadFileParameter parameter = new UploadFileParameter();

// 컨텐츠 종류

parameter.setContentType(multipartFile.getContentType());

// 원본파일명

parameter.setOriginalFilename(multipartFile.getOriginalFilename());

// 저장파일명

parameter.setFilename(filename);

// 실제파일 저장경로

parameter.setPathname(pathname);

// 파일크기

parameter.setSize((int) multipartFile.getSize());

// static resource 접근 경로

parameter.setResourcePathname(resourcePathname);

uploadFileService.save(parameter);

} catch (IllegalStateException | IOException e) {

logger.error("e", e);

}

return new BaseResponse<Boolean>(true);

}

 

}

 

globals-local.properties 는 로컬환경에서 필요한 프로퍼티 정보를 정의한것이며,

만약에 개발서버 운영서버등 환경이 추가되는경우는

globals-dev, globals-prod 등으로 만들어서 local과 동일한 key에 값을 넣어서 사용하시면 됩니다.

영상을 중간중간 편집하다보니 소스가 잘린거같네요,

 

이 영상과 소스가 기초이해하는데 도움이 되시길 바랍니다.^^