文章目录
一、核心源码
java
boolean isTomcat;
boolean isJetty;
@Autowired
ApplicationContext applicationContext;
@PostConstruct
private void init()
{
isTomcat = Stream.of(applicationContext.getBeanDefinitionNames()).anyMatch(name -> StringUtils.containsIgnoreCase(name, "EmbeddedTomcat"));
isJetty = Stream.of(applicationContext.getBeanDefinitionNames()).anyMatch(name -> StringUtils.containsIgnoreCase(name, "EmbeddedJetty"));
log.info("#### isTomcat: {}", isTomcat);
log.info("#### isJetty: {}", isJetty);
}
二、典型应用
java
import java.io.File;
import java.io.IOException;
import java.util.stream.Stream;
import javax.annotation.PostConstruct;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
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 com.fly.demo.common.JsonResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Api(tags = "文件上传(simple)")
@RestController
@RequestMapping("/simple/file")
public class SimpleFileController
{
boolean isTomcat;
boolean isJetty;
@Autowired
ApplicationContext applicationContext;
@PostConstruct
private void init()
{
isTomcat = Stream.of(applicationContext.getBeanDefinitionNames()).anyMatch(name -> StringUtils.containsIgnoreCase(name, "EmbeddedTomcat"));
isJetty = Stream.of(applicationContext.getBeanDefinitionNames()).anyMatch(name -> StringUtils.containsIgnoreCase(name, "EmbeddedJetty"));
log.info("#### isTomcat: {}", isTomcat);
log.info("#### isJetty: {}", isJetty);
}
@ApiOperation("文件上传")
@PostMapping("/upload")
public JsonResult<?> upload(@RequestParam MultipartFile file)
throws IOException
{
File rootDir = new File("upload");
File dest;
if (isTomcat)
{
if (RandomUtils.nextBoolean())
{
log.info("### transferTo");
dest = new File(rootDir.getCanonicalPath() + File.separator + file.getOriginalFilename());
file.transferTo(dest);
}
else
{
log.info("### copyInputStreamToFile");
dest = new File(rootDir, file.getOriginalFilename());
FileUtils.copyInputStreamToFile(file.getInputStream(), dest);
}
}
else
{
log.info("### copyInputStreamToFile");
dest = new File(rootDir, file.getOriginalFilename());
FileUtils.copyInputStreamToFile(file.getInputStream(), dest);
}
return JsonResult.success(dest.getName());
}
}