文件上传工具类FileUtil 实现图片文件上传到服务器中

package com.you.util;

import org.springframework.web.multipart.MultipartFile;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

/**
 * @author: You
 * @date: 2024/1/13 17:25
 * @description 文件工具类 完成图片文件上传
 */
public class FileUtil {
    //编写方法完成模块中,对于图片上传的校验与上传功能

    /**
     * 用于文件上传功能
     * @param file
     * @param servicePath
     * @param localPath  上传文件的本地目录(服务器端)
     * @return
     */
    public String upload(MultipartFile file,String servicePath,String localPath){
        //文件上传
        //1.文件必须存在  是一个具体的文件
        //获取文件的原名称
        String filename = file.getOriginalFilename();
        //非空校验
        if (filename != null && !filename.isEmpty()) {
            //2.文件格式的图片信息   jpg  png  gif
            //校验格式   将名字后缀转换为小写
            filename = filename.toLowerCase();
            //匹配正则表达式
            if (!filename.matches("^.+\\.(jpg|png|gif)$")){
                return null;
            }
            //3.防止木马病毒等 伪装上传
            try {
                //校验文件是否真的为一张图片,如果是一张图片,图片是有长度和高度的
                BufferedImage bufferedImage = ImageIO.read(file.getInputStream());
                //获取图片的长度和高度
                int height = bufferedImage.getHeight();
                int width = bufferedImage.getWidth();
                //判断文件是否合法
                if (width == 0 || height == 0) {
                    return null;
                }

                //4.上述3步校验完成后再进行文件上传
                //具体需要的上传路径
                //当前项目的 /static/images/course/ 上传日期 /文件.jpg
                //String localPath="/static/images/course/";
                //获取日期路径
                String datePath= new SimpleDateFormat("yyyyMMdd/").format(new Date());
                //拼接成当前上传文件的项目目录路径
                String dirPath = localPath + datePath;
                File file1=new File(servicePath+dirPath);
                if (!file1.exists()){
                    file1.mkdirs();
                }
                //需要上传具体的上传路径、对文件进行重命名
                String uuid= UUID.randomUUID().toString();
                //获取文件的格式  。jpg 。png 。gif
                int index=filename.lastIndexOf(".");
                filename=uuid+filename.substring(index);
                //拼接需要上传文件的全路径    目录+名称
                String realPath=dirPath+filename;  //文件基于当前项目的具体路径
                //将文件上传到服务器上
                file.transferTo(new File(servicePath+realPath));

                System.out.println(servicePath+realPath);

                //将路径参数保存在将要传递给数据库的对象中

                return  realPath;


            }catch (Exception e){
                e.printStackTrace();
            }

        }

        //如果没有文件 直接返回null
        return null;
    }
}

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
FileUtil是一个基于Qt框架开发的文件操作工具。Qt是一种跨平台的C++应用程序开发框架,可以实现图形用户界面(GUI)以及许多其他功能。 FileUtil提供了许多方便的文件操作功能,可以在不同的操作系统上使用。它可以帮助我们进行文件的创建、复制、移动、重命名、删除以及文件夹的创建和删除等操作。 使用FileUtil,我们可以很方便地在程序读取和写入文件。我们可以打开一个文件,并通过读取和写入流来读取或写入文件的内容。FileUtil还提供了一些常用的函数,比如判断文件是否存在、获取文件大小,读取和写入文件时的进度等。 除了文件操作,FileUtil还可以进行文件夹的操作。它可以帮助我们创建、删除文件夹,以及遍历文件夹的文件和子文件夹。 FileUtil还提供了一些其他的功能,比如文件的压缩和解压缩,文件权限的设置等。 作为一个基于Qt的文件操作工具,FileUtil具有跨平台的优势。无论我们是在Windows、Mac还是Linux系统上开发应用程序,都可以使用FileUtil来进行文件操作,而无需关心不同操作系统的差异。 总而言之,FileUtil是一个方便实用的文件操作工具,为我们提供了简单易用的文件操作接口。无论是读取、写入文件,还是进行文件夹操作,FileUtil都能满足我们的需求。使用它,我们可以更方便地对文件进行管理和操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值