上传图片

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.UUID;

/**
 */
public class FileSystemUploadServiceImpl extends AbstractFileUploadService {

    private final String STORAGE_DIR = "upload";

    private final Logger log = LoggerFactory.getLogger(FileSystemUploadServiceImpl.class);

    @Override
    protected String saveFileInternal(MultipartFile file) throws IOException {

        log.debug("获取文件MIME类型-" + file.getContentType());// 获取文件MIME类型

        log.debug("获取表单中文件组件的名字-" + file.getName());// 获取表单中文件组件的名字

        log.debug("获取上传文件的原名-" + file.getOriginalFilename());// 获取上传文件的原名

        log.debug("获取文件的字节大小,单位byte-" + file.getSize());// 获取文件的字节大小,单位byte

        String fileName = UUID.randomUUID().toString().replaceAll("-", "")
                + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));// 保存后的文件名
        log.info(fileName);
        String filePath = getRealPath(STORAGE_DIR) + File.separator;
        ensureFolderExists(filePath);
        log.info("file stored in {}" , filePath);
        String retPath = STORAGE_DIR + File.separator + fileName;

        File uploadFile = new File(filePath + fileName);
        uploadFile.mkdirs();
        file.transferTo(new File(filePath,fileName));

        return File.separator + retPath;
    }

    @Override
    protected void removeFileInternal(ApFileJpaEntity file) {
        String path = file.getPath();
        File f = new File(getRealPath() + path);
        if( f.exists() )
            f.delete();
    }

    // --------------- private methods
    private HttpServletRequest getRequest(){
        return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
    }

    private String getRealPath(){
        return getRequest().getServletContext().getRealPath("/");
    }

    private String getRealPath(String path){
        return getRequest().getServletContext().getRealPath(path);
    }

    private void ensureFolderExists(String dir){
        File file = new File(dir);
        if( file.isDirectory() && !file.exists() )
            file.mkdirs();
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值