logo  

springboot最佳实践

springboot最佳实践
作者: 陈安廉

摘要:软件开发进阶系列


文件上传


2021-09-14 14:03:38

@Autowired
HttpServletRequest request;

@Value("${ueditor.upload.domain}")
private String webUploadDomain;

@Value("${txcloud.upload.dir}")
private String txcloudUploadDir;


@RequestMapping("/upload")
public RestResult upload(@RequestParam("file") MultipartFile file) {

    String webUploadDir = UeditorUtil.getUploadDir();
    if (!webUploadDir.endsWith(File.separator)) {
        webUploadDir += File.separator;
    }


    String fileNameWhole = file.getOriginalFilename();
    Integer indexOfDot = fileNameWhole.lastIndexOf(".");
    String suffixName = "";
    String fileName = "";
    if (indexOfDot > 0) {
        suffixName = fileNameWhole.substring(indexOfDot);
        fileName = fileNameWhole.substring(0, indexOfDot);
    } else {
        fileName = fileNameWhole;
    }

    String date = TimeUtil.date2Str(new Date(), "yyyyMMddHHmmssS");

    String newFileName = fileName + "-DATE-" + date + suffixName;
    String destPath = webUploadDir + newFileName;

    File dest = new File(destPath);

    try {
        file.transferTo(dest);

        String filePath = txcloudUploadDir + newFileName;
        TxCloudUtil.upLoadByFile(dest, filePath);

        FileUtils.forceDeleteOnExit(dest);


        String url = webUploadDomain + filePath;
        return RestResult.buildSuccess(url);
    } catch (IOException e) {
        log.error(e.getMessage(), e);
        return RestResult.buildFailWithMsg(e.getMessage());
    }
}



配置上传的最大大小:

import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.unit.DataSize;

import javax.servlet.MultipartConfigElement;

/**
 * @author chenanlian
 * 配置上传文件的最大大小
 */
@Configuration
public class MultipartConfig {

    @Bean
    public MultipartConfigElement multipartConfigElement(){
        MultipartConfigFactory factory=new MultipartConfigFactory();
        factory.setMaxFileSize(DataSize.parse("500MB"));
        factory.setMaxRequestSize(DataSize.parse("500MB"));
        return factory.createMultipartConfig();
    }
}