文件上传存储

工具类:

import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

public class FileUtils {

    /**
     * @param file     文件
     * @param path     文件存放路径
     * @param fileName 保存的文件名
     * @return
     */
    public static boolean upload(MultipartFile file, File path, String fileName) {

        //确定上传的文件名
        String realPath = path + "\\" + fileName;
        System.out.println("上传文件:" + realPath);

        File dest = new File(realPath);

        //判断文件父目录是否存在
        if (!dest.getParentFile().exists()) {
            dest.getParentFile().mkdir();
        }

        try {
            //保存文件
            file.transferTo(dest);
            return true;
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return false;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return false;
        }

    }

}

yml配置:
pro:
uploadPath: /RGVOM/CompanyDate/

Controller层:


    @Value("${pro.uploadPath}")
    private String uploadPath;

    public final static String UPLOAD_PATH_PREFIX = "src/main/resources/static";

   /**
     * 2021-06-30
     * 函数名称:AlarmLogFileUpload
     * 函数功能:告警日志上传
     * 函数参数:companyName :公司名称
     *
     * 返回值说明:
     *    @return map
     *    @throws IOException
     *    @author Rock(阮英华)
     *
     *******************************************************
     * 修改记录:
     *    2021年6月30日 创建
     * @param
     */


    @RequestMapping("/AlarmLogFileUpload")
    public List AlarmLogFileUpload(@RequestParam("file") MultipartFile[] files,String companyName ){
        System.out.println("上传的图片数:"+files.length);

        List<Map<String,Object>> root=new ArrayList<Map<String,Object>>();
        int  i  = 0;                            //图片后缀(用来区别同一时间产生的日志图片)
        for (MultipartFile file : files) {      //循环保存文件
            if(i<10000){
                i++;
            }
            Map<String,Object> result=new HashMap<String, Object>();//一个文件上传的结果
            String result_msg="";//上传结果信息
            //企业名称
            String cname = companyName;

            // 获取年月日的日期格式
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
            String format = simpleDateFormat.format(new Date());
            //判断上传文件格式
            String fileType = file.getContentType();
            if (fileType.equals("image/jpeg") || fileType.equals("image/png") || fileType.equals("image/jpeg")) {
                //图片存储路径
                File readPath = new File(UPLOAD_PATH_PREFIX + uploadPath +"/"+cname+"/"+ File.separator+"AlarmLog"+"/"+format+"_"+"AlarmLog" ); //没日期分类
                // 要上传的目标文件存放的绝对路径
                /**        final String localPath="F:\\IDEAProject\\imageupload\\target\\classes\\static\\img";     **/
                //上传后保存的文件名(需要防止图片重名导致的文件覆盖)
                //获取文件名
                String fileName = file.getOriginalFilename();
                //获取文件后缀名
                String suffixName = fileName.substring(fileName.lastIndexOf("."));

                //重新生成文件名
                //fileName = format+"_"+i+suffixName;
                //如果文件路径不存在则创建
                if (!readPath.isDirectory()) {
                    readPath.mkdirs();
                }
                if (FileUtils.upload(file, readPath, fileName)) {
                    //文件存放的相对路径(一般存放在数据库用于img标签的src)
                    String relativePath="img/"+fileName;
                    result.put("relativePath",relativePath);//前端根据是否存在该字段来判断上传是否成功
                    result_msg="图片上传成功";
                }
                else{
                    result_msg="图片上传失败";
                }
            }
            else{
                result_msg="图片格式不正确";
            }


            result.put("result_msg",result_msg);
            root.add(result);
        }

        String root_json= JSON.toJSONString(root);
        System.out.println(root_json);
        return root;
    }

二、不创建工具类

@RequestMapping("/upload")
@RestController
@CrossOrigin
public class uploadController {


    @Value("${pro.uploadPath}")
    private String uploadPath;

    public final static String UPLOAD_PATH_PREFIX = "src/main/resources/static";

    /**
     * 获取文件路径
     * @param request 请求体
     * @param fileName 文件名称
     * @return 文件路径
     */
    public String getUploadPath(HttpServletRequest request, String fileName) {
        return request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + uploadPath + "/" + fileName;
    }



    /**     **************************资料上传***************************     **/
    /**
     * 2021-06-29
     * 函数名称:CompanyFileUpload
     * 函数功能:企业基本信息(营业执照、合同)上传
     * 函数参数:equipment
     *
     * 返回值说明:
     *    @return map
     *    @throws IOException
     *    @author Rock(阮英华)
     *备  注:BasicInfo 基础信息
     *******************************************************
     * 修改记录:
     *    2021年6月29日 创建
     * @param
     */
    @RequestMapping(value = "/CompanyUpload",method = RequestMethod.POST)
    public Object CompanyFileUpload(@RequestParam("file") MultipartFile multipartFile, HttpServletRequest request,String companyName) {
        Map<String, Object> map = new HashMap();
        map.put("msg", "上传成功");

        if (multipartFile.isEmpty()) {
            map.put("msg", "空文件");
            return map;
        }

        // 获取文件名
        String fileName = multipartFile.getOriginalFilename();
        if ("".equals(fileName)) {
            map.put("msg", "文件名不能为空");
            return map;
        }
        System.out.println("上传文件原始的名字: " + fileName);

        // 使用uuid生成新文件名
        String newFileName =  fileName;
       // String newFileName =  fileName+fileName.substring(fileName.lastIndexOf("."), fileName.length());        //用原来的文件名
       // String newFileName = UUID.randomUUID().toString().replaceAll("-", "") + fileName.substring(fileName.lastIndexOf("."), fileName.length());
        System.out.println("保存的文件的新名字: " + newFileName);
        //企业名称
        String cname = companyName;
            // 获取年月日的日期格式
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
            String format = simpleDateFormat.format(new Date());

        // 生成以日期分割的文件路径
        File readPath = new File(UPLOAD_PATH_PREFIX + uploadPath +"/"+ cname+"/"+File.separator+"BasicInfo" ); //没日期分类
       // File readPath = new File(UPLOAD_PATH_PREFIX + uploadPath + File.separator + format);    //有日期
        System.out.println("存放的文件夹: " + readPath);
        System.out.println("存放文件的绝对路径: " + readPath.getAbsolutePath());
        // 判断文件夹是否存在
        if (!readPath.isDirectory()) {
            // 创建文件夹
            readPath.mkdirs();
        }

        // 文件真实的保存路径
        File file = new File(readPath.getAbsolutePath() + File.separator + newFileName);
        try {
            multipartFile.transferTo(file);

            // 获取存储路径
            String filePath = getUploadPath(request, format + "/" + newFileName);
            map.put("path", filePath);
        } catch (IOException e) {
            e.printStackTrace();
            map.put("msg", "上传失败");
        }

        return map;
    }

postman测试:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值