java 文件上传

java 文件上传到本地文件夹下

package com.example.project.controller;

import com.example.utils.upload.UploadUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;

/**
 * 文件上传
 */
@Api("上传接口")
@RestController
@RequestMapping("/uploadFileController")
public class UploadFileController {

    @ResponseBody
    @ApiOperation("图片上传")
    @PostMapping(value="/filesUpload",produces="application/json;charset=UTF-8")
    public String filesUpload(@RequestParam(value = "files" ) MultipartFile[] files, HttpServletRequest request) {
        String [] fileTypeArray = {".jpg",".gdf"};
        String uploadFolder = "D:/upload/picture";
        return UploadUtils.filesUpload(files,uploadFolder,fileTypeArray);
    }
}
package com.example.utils.upload;

import org.apache.commons.lang3.StringUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 文件上传工具类
 */
public class UploadUtils {

    /**
     * 验证文件类型(检查文件类型调用此方法)
     *
     * @param files  文件路径或名称
     * @param uploadFolder  文件夹路径
     * @param fileTypeArray 要求得文件类型数组
     * @return 上传文件路径地址  以逗号分割 D:/upload/picture/20210630163728_a.jpg,D:/upload/picture/20210630163728_b.jpg
     */
    //文件上传
    public static String filesUpload(MultipartFile[] files, String uploadFolder, String[] fileTypeArray) {
        List<String> filePathList = new ArrayList<>();
        if (files != null && files.length > 0) {
            for (MultipartFile file : files) {
                //判断文件类型是否正确
                if (!UploadUtils.checkFileType(file.getOriginalFilename(), fileTypeArray)) {//不是要求得文件类型
                    return "文件类型错误";
                } else {//是要求得文件类型
                    // 保存文件
                    if (!file.isEmpty()) {
                        try {
                            String filePath = uploadFolder +"/"+ (new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + "_" + file.getOriginalFilename());

                            filePathList.add(filePath);
                            File saveDir = new File(filePath);
                            if (!saveDir.getParentFile().exists()) {
                                saveDir.getParentFile().mkdirs();
                            }
                            // 转存文件
                            file.transferTo(saveDir);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
        // 数组转String字符串
        return StringUtils.join(filePathList, ",");
    }

    /**
     * 验证文件类型(检查文件类型调用此方法)
     *
     * @param filePath  文件路径
     * @param fileTypeArray 要求得文件类型数组
     * @return ture:符合得文件类型  false:不符合得文件类型
     */
    public static boolean checkFileType(String filePath, String[] fileTypeArray) {
        if (filePath == null || !(fileTypeCompare(filePath, fileTypeArray))) {
            return false;
        }
        return true;
    }

    /**
     * 文件和已知得文件类型比较
     *
     * @param filePath  文件路径
     * @param fileTypeArray 要求得文件类型数组
     * @return ture:符合得文件类型  false:不符合得文件类型
     */
    public static boolean fileTypeCompare(String filePath, String[] fileTypeArray) {
        boolean isTure = false;//
        for (String fileType : fileTypeArray) {
            if (org.springframework.util.StringUtils.endsWithIgnoreCase(filePath, fileType)) {//判断文件路径结尾是否在给的文件类型得数组中找到
                isTure = true;
                return isTure;
            }
        }
        return isTure;
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值