千家信息网

SpringBoot+BootStrap多文件上传到本地的方法

发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,这篇文章主要介绍"SpringBoot+BootStrap多文件上传到本地的方法"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"SpringBoot+BootS
千家信息网最后更新 2025年11月11日SpringBoot+BootStrap多文件上传到本地的方法

这篇文章主要介绍"SpringBoot+BootStrap多文件上传到本地的方法"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"SpringBoot+BootStrap多文件上传到本地的方法"文章能帮助大家解决问题。

    1、application.yml文件配置

    #  文件大小 MB必须大写#  maxFileSize 是单个文件大小#  maxRequestSize是设置总上传的数据大小spring:  servlet:    multipart:      enabled: true      max-file-size: 20MB      max-request-size: 20MB

    2、application-resources.yml配置(自定义属性)

    #文件上传路径file:  filepath: O:/QMDownload/Hotfix2/

    3、后台代码

    (1)FileService.java

    package com.sun123.springboot.service;import org.springframework.web.multipart.MultipartFile;import java.util.Map;public interface FileService {    Map fileUpload(MultipartFile[] file);}

    (2)FileServiceImpl.java

    package com.sun123.springboot.service.impl;import com.sun123.springboot.FileUtil;import com.sun123.springboot.service.FileService;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Service;import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.File;import java.io.FileInputStream;import java.io.PrintWriter;import java.util.*;/** * @ClassName FileServiceImpl * @Description TODO * @Date 2019/3/22 22:19 * @Version 1.0 */@Servicepublic class FileServiceImpl implements FileService {    private static Logger log= LoggerFactory.getLogger(FileServiceImpl.class);    //文件上传路径    @Service包含@Component    @Value("${file.filepath}")    private String filepath;    Map resultMap = new LinkedHashMap();  //会将上传信息存入此处,根据需求自行调整    List fileName =new ArrayList();    //必须注入,不可以创建对象,否则配置文件引用的路径属性为null    @Autowired    FileUtil fileUtil;    @Override    public Map fileUpload(MultipartFile[] file) {        HttpServletRequest request = null;        HttpServletResponse response;        resultMap.put("status", 400);        if(file!=null&&file.length>0){            //组合image名称,";隔开"//            List fileName =new ArrayList();            PrintWriter out = null;            //图片上传            try {                for (int i = 0; i < file.length; i++) {                    if (!file[i].isEmpty()) {                        //上传文件,随机名称,","分号隔开                        fileName.add(fileUtil.uploadImage(request, filepath+"upload/"+ fileUtil.formateString(new Date())+"/", file[i], true)+fileUtil.getOrigName());                    }                }                //上传成功                if(fileName!=null&&fileName.size()>0){                    System.out.println("上传成功!");                    resultMap.put("images",fileName);                    resultMap.put("status", 200);                    resultMap.put("message", "上传成功!");                }else {                    resultMap.put("status", 500);                    resultMap.put("message", "上传失败!文件格式错误!");                }            } catch (Exception e) {                e.printStackTrace();                resultMap.put("status", 500);                resultMap.put("message", "上传异常!");            }            System.out.println("==========filename=========="+fileName);        }else {            resultMap.put("status", 500);            resultMap.put("message", "没有检测到有效文件!");        }        return resultMap;    }    }

    (3)FileUtil.java

    package com.sun123.springboot;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletRequest;import java.io.File;import java.text.SimpleDateFormat;import java.util.Date;/** * Created by wangluming on 2018/5/24. */@Componentpublic class FileUtil {//    //文件上传路径//    @Value("${file.filepath}")//    private String filepath;    //文件随机名称    private String origName;    public String getOrigName() {        return origName;    }    public void setOrigName(String origName) {        this.origName = origName;    }    /**     *     * @param request     * @param path_deposit 新增目录名 支持多级不存在目录     * @param file 待文件     * @param isRandomName 是否要基于图片名称重新编排名称     * @return     */    public String uploadImage(HttpServletRequest request, String path_deposit, MultipartFile file, boolean isRandomName) {        //上传        try {            String[] typeImg={"gif","png","jpg","docx","doc","pdf"};            if(file!=null){                origName=file.getOriginalFilename();// 文件原名称                System.out.println("上传的文件原名称:"+origName);                // 判断文件类型                String type=origName.indexOf(".")!=-1?origName.substring(origName.lastIndexOf(".")+1, origName.length()):null;                if (type!=null) {                    boolean booIsType=false;                    for (int i = 0; i < typeImg.length; i++) {                        if (typeImg[i].equals(type.toLowerCase())) {                            booIsType=true;                        }                    }                    //类型正确                    if (booIsType) {                        //存放图片文件的路径                        //String path="O:\\QMDownload\\Hotfix\\";                        //String path=filepath;                        //System.out.print("文件上传的路径"+path);                        //组合名称                        //String fileSrc = path+path_deposit;                        String fileSrc = path_deposit;                        //是否随机名称                        if(isRandomName){                            //随机名规则:文件名+_CY+当前日期+8位随机数+文件后缀名                            origName=origName.substring(0,origName.lastIndexOf("."))+"_CY"+formateString(new Date())+                                    MathUtil.getRandom620(8)+origName.substring(origName.lastIndexOf("."));                        }                        System.out.println("随机文件名:"+origName);                        //判断是否存在目录                        File targetFile=new File(fileSrc,origName);                        if(!targetFile.exists()){                            targetFile.getParentFile().mkdirs();//创建目录                        }                        //上传                        file.transferTo(targetFile);                        //完整路径                        System.out.println("完整路径:"+targetFile.getAbsolutePath());                        return fileSrc;                    }                }            }            return null;        }catch (Exception e) {            e.printStackTrace();            return null;        }    }    /**     * 格式化日期并去掉"-"     * @param date     * @return     */    public String formateString(Date date){        SimpleDateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd");        String list[] = dateFormater.format(date).split("-");        String result = "";        for (int i=0;i

    (4)MathUtil.java

    package com.sun123.springboot;import java.security.MessageDigest;import java.util.Random;public class MathUtil {    /**     * 获取随机的数值。     * @param length    长度     * @return     */    public static String getRandom620(Integer length){        String result = "";        Random rand = new Random();        int n = 20;        if(null != length && length > 0){            n = length;        }        boolean[]  bool = new boolean[n];        int randInt = 0;        for(int i = 0; i < length ; i++) {            do {                randInt  = rand.nextInt(n);            }while(bool[randInt]);            bool[randInt] = true;            result += randInt;        }        return result;    }    /**     * MD5 加密     * @param str     * @return     * @throws Exception     */    public static String  getMD5(String str) {        MessageDigest messageDigest = null;        try {            messageDigest = MessageDigest.getInstance("MD5");            messageDigest.reset();            messageDigest.update(str.getBytes("UTF-8"));        } catch (Exception e) {            //LoggerUtils.fmtError(MathUtil.class,e, "MD5转换异常!message:%s", e.getMessage());        }        byte[] byteArray = messageDigest.digest();        StringBuffer md5StrBuff = new StringBuffer();        for (int i = 0; i < byteArray.length; i++) {            if (Integer.toHexString(0xFF & byteArray[i]).length() == 1)                md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));            else                md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));        }        return md5StrBuff.toString();    }}

    (5)FileController.java

    package com.sun123.springboot.controller;import com.sun123.springboot.service.FileService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile;import java.util.Map;/** * @ClassName FileController * @Description TODO * @Date 2019/3/22 22:21 * @Version 1.0 */@Controller@RequestMapping(value = "/upload")public class FileController {    @Autowired    private FileService fileService;    @RequestMapping(value = "/UpLoadImage")    @ResponseBody    public Map fileUpload(@RequestParam("file") MultipartFile[] file) throws Exception {        Map fileUpload = fileService.fileUpload(file);        return fileUpload;    }}

    4、前台代码(bootstrap)

    关于"SpringBoot+BootStrap多文件上传到本地的方法"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

    0