广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot+BootStrap多文件上传到本地实例
  • 168
分享到

SpringBoot+BootStrap多文件上传到本地实例

2024-04-02 19:04:59 168人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录1、application.yml文件配置2、application-resources.yml配置(自定义属性)3、后台代码(1)FileService.java(2)File

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<String,Object> 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.*;

@Service
public class FileServiceImpl implements FileService {
    private static Logger log= LoggerFactory.getLogger(FileServiceImpl.class);
    //文件上传路径    @Service包含@Component
    @Value("${file.filepath}")
    private String filepath;
    Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
  //会将上传信息存入此处,根据需求自行调整
    List<String> fileName =new ArrayList<String>();
    //必须注入,不可以创建对象,否则配置文件引用的路径属性为null
    @Autowired
    FileUtil fileUtil;
    @Override
    public Map<String, Object> fileUpload(MultipartFile[] file) {
        HttpServletRequest request = null;
        HttpServletResponse response;
        resultMap.put("status", 400);
        if(file!=null&&file.length>0){
            //组合image名称,“;隔开”
//            List<String> fileName =new ArrayList<String>();
            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;

@Component
public class FileUtil {
//    //文件上传路径
//    @Value("${file.filepath}")
//    private String filepath;
    //文件随机名称
    private String origName;
    public String getOrigName() {
        return origName;
    }
    public void setOrigName(String origName) {
        this.origName = origName;
    }
    
    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;
        }
    }
    
    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<list.length;i++) {
            result += list[i];
        }
        return result;
    }
}

(4)MathUtil.java

package com.sun123.springboot;
import java.security.MessageDigest;
import java.util.Random;
public class MathUtil {
    
    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;
    }
    
    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;

@Controller
@RequestMapping(value = "/upload")
public class FileController {
    @Autowired
    private FileService fileService;
    @RequestMapping(value = "/UpLoadImage")
    @ResponseBody
    public Map<String,Object> fileUpload(@RequestParam("file") MultipartFile[] file) throws Exception {
        Map<String, Object> fileUpload = fileService.fileUpload(file);
        return fileUpload;
    }
}

4、前台代码(bootstrap)

<div class="container" th:fragment="fileupload">
        <input id="uploadfile" type="file" class="file" multiple="multiple" name="file"/>
    </div>
<script>
    $("#uploadfile").fileinput({
        language: 'zh', //设置语言
        //uploadUrl: "http://127.0.0.1/testDemo/fileupload/upload.do", //上传的地址
        uploadUrl: "/upload/UpLoadImage", //上传的地址
        allowedFileExtensions: ['jpg', 'gif', 'png', 'docx', 'zip', 'txt'], //接收的文件后缀
        //uploadExtraData:{"id": 1, "fileName":'123.mp3'},
        showClose: false,//是否显示关闭按钮
        uploadAsync: true, //默认异步上传
        showUpload: true, //是否显示上传按钮
        //showBrowse: true, //是否显示浏览按钮
        showRemove: true, //显示移除按钮
        showPreview: true, //是否显示预览
        showCaption: false, //是否显示标题
        browseClass: "btn btn-primary", //按钮样式
        dropZoneEnabled: true, //是否显示拖拽区域
        //previewFileType: ['docx'], //预览文件类型
        //minImageWidth: 50, //图片的最小宽度
        //minImageHeight: 50,//图片的最小高度
        //maxImageWidth: 1000,//图片的最大宽度
        //maxImageHeight: 1000,//图片的最大高度
        maxFileSize:0,//单位为kb,如果为0表示不限制文件大小
        //minFileCount: 0,
        maxFileCount: 10, //表示允许同时上传的最大文件个数
        enctype: 'multipart/form-data',
        validateInitialCount: true,
        previewFileIcon: "<iclass='glyphicon glyphicon-king'></i>",
        msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!",
    }).on("fileuploaded", function (event, data, previewId, index) {
    });
</script>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: SpringBoot+BootStrap多文件上传到本地实例

本文链接: https://www.lsjlt.com/news/143798.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot+BootStrap多文件上传到本地实例
    目录1、application.yml文件配置2、application-resources.yml配置(自定义属性)3、后台代码(1)FileService.java(2)File...
    99+
    2022-11-13
  • SpringBoot+BootStrap多文件上传到本地的方法
    这篇文章主要介绍“SpringBoot+BootStrap多文件上传到本地的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot+BootStrap多文件上传到本地的方法”文章能帮...
    99+
    2023-06-29
  • 如何将本地文件上传到gitlab上
    随着云计算技术的发展和普及,越来越多的软件开发项目都开始采用云端的代码管理平台来进行协作和管理。其中,GitLab因为其简单易用、功能强大等优点,成为了很多企业和开发团队的首选。但是,对于一些开发者来说,如何将本地文件上传到GitLab上还...
    99+
    2023-10-22
  • 上传本地文件到HDFS服务器
    在这篇文章中,我将详细介绍如何将本地文件上传到HDFS(分布式文件系统)服务器。我们将使用Hadoop命令行工具来完成这个任务。 首先,确保你已经安装了Hadoop并且HDFS服务器正在运行。接下来,我们将按照以下步骤进行操作: 步骤 1:...
    99+
    2023-12-23
    hdfs 服务器 npm
  • Spring boot实现文件上传实例(多文件上传)
    文件上传主要分以下几个步骤:(1)新建maven java project;(2)在pom.xml加入相应依赖;(3)新建一个表单页面(这里使用thymleaf);(4)编写controller;(5)测试;(6)对上传的文件做一些限制;(...
    99+
    2023-05-31
    spring boot 文件上传
  • SpringMVC 单文件上传与多文件上传实例
    一、简述一个javaWeb项目中,文件上传功能几乎是必不可少的,本人在项目开发中也时常会遇到,以前也没怎么去理它,今天有空学习了一下这方面的知识,于是便将本人学到的SpringMVC中单文件与多文件上传这部分知识做下笔记。二、单文件上传1、...
    99+
    2023-05-31
    springmvc 文件上传 多文件上传
  • SpringBoot实现单文件与多文件上传
    目录一、公共文件存储代码1.FileUploadUtils.java2.FileUtils.java3.MimeTypeUtils.java4.FileException.java5...
    99+
    2022-11-12
  • SpringBoot如何实现多文件上传
    这篇文章主要介绍“SpringBoot如何实现多文件上传”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot如何实现多文件上传”文章能帮助大家解决问题。1.代码结构:2.Control...
    99+
    2023-07-05
  • bootstrap中fileinput组件整合Springmvc上传图片到本地磁盘的示例分析
    小编给大家分享一下bootstrap中fileinput组件整合Springmvc上传图片到本地磁盘的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,...
    99+
    2022-10-19
  • springboot多文件上传实现使用postman测试多文件上传接口
    使用postman测试多文件上传接口 1、创建测试类(FileController.java) package com.jeff.controller; import java....
    99+
    2022-11-12
  • Node.js如何实现上传本地文件到服务器
    这篇文章将为大家详细讲解有关Node.js如何实现上传本地文件到服务器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。现在存在的问题每次打包完, 都要打开 FileZill...
    99+
    2022-10-19
  • SpringBoot上传文件并配置本地资源映射来访问文件的实例代码
    1.准备工作 1、新建一个SpringBoot项目加上web依赖, 所有依赖 <dependency> <groupId>org.springframe...
    99+
    2022-11-12
  • 本地文件怎么上传到云服务器
    要将本地文件上传到云服务器,你可以使用以下方法之一:1. 使用SSH命令行工具:在本地计算机上打开终端或命令提示符,然后使用SCP(...
    99+
    2023-09-27
    云服务器
  • 本地文件怎么传到云服务器上
    将本地文件传输到云服务器上有多种方法,下面列举两种常见的方法:1. 使用SCP(Secure Copy)命令:SCP是一种通过加密的...
    99+
    2023-09-27
    云服务器
  • 怎么把本地文件上传到云主机
    要将本地文件上传到云主机,可以使用以下方法之一:1. 使用FTP客户端:安装一个FTP客户端程序(如FileZilla),打开该程序...
    99+
    2023-08-19
    云主机
  • SpringBoot实现单文件与多文件上传功能
    目录1.单文件上传2.多文件上传1.单文件上传 首先创建一个Spring Boot项目,并添加spring-boot-starter-web依赖 然后创建一个upload.jsp文件...
    99+
    2022-11-12
  • springboot多文件上传如何实现使用postman测试多文件上传接口
    这篇文章给大家分享的是有关springboot多文件上传如何实现使用postman测试多文件上传接口的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。使用postman测试多文件上传接口1、创建测试类(FileCon...
    99+
    2023-06-20
  • Java怎么从本地文件复制到网络文件上传
    今天小编给大家分享一下Java怎么从本地文件复制到网络文件上传的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。文件复制文件复制...
    99+
    2023-07-06
  • 关于Java从本地文件复制到网络文件上传
    目录文件复制和文件上传文件复制主要代码测试类执行结果说明网络文件传输(TCP)主要代码执行效果网络文件传输(HTTP)使用 apache 组件实现文件上传使用 Servlet 3.0...
    99+
    2023-05-15
    Java文件 Java复制文件 java文件网络上传
  • 怎么把本地文件上传到虚拟主机
    要将本地文件上传到虚拟主机,可以按照以下步骤进行操作:1. 选择一个FTP工具:FTP(文件传输协议)是一种常用的文件传输协议,可以...
    99+
    2023-08-23
    虚拟主机
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作