All Downloads are FREE. Search and download functionalities are using the official Maven repository.

love.keeping.starter.web.utils.UploadUtil Maven / Gradle / Ivy

The newest version!
package love.keeping.starter.web.utils;

import love.keeping.starter.common.constants.StringPool;
import love.keeping.starter.common.exceptions.impl.DefaultSysException;
import love.keeping.starter.common.utils.Assert;
import love.keeping.starter.common.utils.DateUtil;
import love.keeping.starter.common.utils.FileUtil;
import love.keeping.starter.common.utils.StringUtil;
import love.keeping.starter.web.common.utils.ApplicationUtil;
import love.keeping.starter.web.components.upload.UploadHandlerFactory;
import love.keeping.starter.web.components.upload.handler.UploadHandler;
import love.keeping.starter.web.service.SysParameterService;
import java.io.IOException;
import java.io.InputStream;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.multipart.MultipartFile;

@Slf4j
public class UploadUtil {

  /**
   * 上传文件
   *
   * @param file
   * @return
   */
  public static String upload(MultipartFile file) {

    Assert.notNull(file);
    SysParameterService sysParameterService = ApplicationUtil.getBean(SysParameterService.class);
    String uploadTypeStr = sysParameterService.findByKey("upload.type", "LOCAL");

    UploadHandler uploadHandler = UploadHandlerFactory.getInstance(uploadTypeStr);

    String suffix = FileUtil.getSuffix(file.getOriginalFilename());
    String fileName = IdUtil.getUUID();
    String fullFileName =
        fileName + (StringUtil.isEmpty(suffix) ? StringPool.EMPTY_STR : ("." + suffix));

    try (InputStream is = file.getInputStream()) {
      return uploadHandler.upload(is, getDefaultLocations(), fullFileName);
    } catch (IOException e) {
      log.error(e.getMessage(), e);
      throw new DefaultSysException(e.getMessage());
    }
  }

  /**
   * 获取默认的locations
   *
   * @return
   */
  private static List getDefaultLocations() {

    LocalDate now = LocalDate.now();
    List locations = new ArrayList<>();
    locations.add(DateUtil.formatDate(now, "yyyy"));
    locations.add(DateUtil.formatDate(now, "MM"));
    locations.add(DateUtil.formatDate(now, "dd"));

    return locations;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy