首页 > 其他分享 >SpringBoot上传文件

SpringBoot上传文件

时间:2022-09-01 17:44:56浏览次数:80  
标签:文件 Vue SpringBoot ElementUI upload file 上传 String

  1. 前端使用ElementUI+Vue
  2. 后端使用SpringBoot

1 前端代码

1.0 组件导入&初始化

  1. 导入ElementUI、Axios、Vue的资源。完成Vue的初始化和生效区域的设置。这些资源都能找到,把他们放在你SpringBoot的static文件夹下。
<!-- 引入组件库 -->
<script src="../js/vue.js"></script>
<script src="../element-ui/lib/index.js"></script>
<link rel="stylesheet" href="../element-ui/lib/theme-chalk/index.css">
<script src="../js/axios-0.18.0.js"></script>
  1. 使用一个div包裹你的主页面,并给一个id,这就是Vue生效的区间。一般叫做app
<body>
  <div id="app">
    你的代码主体
  </div>
</body>
  1. 初始化Vue
<script>
    new Vue({
        el: `#app`, 
        data: function () {
            return {
                这里是你动态绑定的数据
            }
        },
        methods: {
           这里是你的函数
        }
    });
</script>

1.1 html

直接使用的是ElementUI提供的上传功能。

<el-upload
  class="upload-demo"
  drag
  action="/common/uploadTrain"
  :on-success="handleUploadSuccess"
  :on-remove="handleRemove"
  :before-remove="beforeRemove"
  :before-upload="beforeUpload"
  :on-exceed="handleExceed"
  :file-list="fileList"
  :show-file-list="true"
  :limit="1"
  ref="upload">
    <i class="el-icon-upload"></i>
    <div class="el-upload__text">Drag your file here, or <em>click to upload</em></div>
    <div class="el-upload__tip" slot="tip">FASTA sequence file only, limited 2MB</div>
</el-upload>
  • el-upload的参数在ElementUI中都有详细的说明,详见:https://element.eleme.io/#/zh-CN/component/upload ,这里主要说一下action和钩子函数。
  • action对应的就后端接口,就是这个文件上传请求发送到后端的哪里来处理
  • 钩子函数,on-xxx和before-xxx,一般做一些文件格式/大小校验,上传成功的通知,这些函数的使用官网中都有模板。值得注意的是beforeRemove和handleRemove需要加上一个if (file && file.status === "success")的判断,否则可能会出现错误。

2 后端代码

刚刚,我们的接口写的是/common/uploadTrain。上传是一个通用的功能,不属于某一个实体专有,我们就新建一个CommonController,专门写这些能够复用的Controller。
这个请求不是我们axios自己写的,而是el-upload做的,底层是一个post form表单,后端需要使用MultipartFile类作为参数。

@RestController
@RequestMapping("/common") // 
public class CommonController {
    // 转存根目录 使用读取配置方式获取
    @Value("${bio.uploadPath}")
    private String basedir;
    /**
     * 上传文件 用户从本地上传到服务器
     * @param file
     * @return filename
     */
    public String upload(MultipartFile file){
            //1. 获取原始文件名
            String originalFilename = file.getOriginalFilename();   
            String suffix = originalFilename.substring(originalFilename.lastIndexOf(".")); // 获取文件后缀
            //2. 使用UUID重新生成文件名,防止文件名称重复造成文件覆盖
            String fileName = UUID.randomUUID().toString() + suffix;
            //3. 创建一个目录对象
            File dir = new File(basedir);
            //4. 判断当前目录是否存在
            if(!dir.exists()){
                //若目录不存在,需要创建
                dir.mkdirs();
            }
            try {
                //5. 将临时文件转存到指定位置
                file.transferTo(new File(basedir + fileName));
                return fileName;
            } catch (Exception e) {  // 上传出现问题直接抛出系统异常,不属于业务范围
                throw new SystemException("Upload failed, please check your network", Code.SYSTEM_ERR);
            }
    }

标签:文件,Vue,SpringBoot,ElementUI,upload,file,上传,String
From: https://www.cnblogs.com/80sVolxxxx/p/16610310.html

相关文章

  • Linux:按一个文件的每一行查找另一个文件
     #!/usr/bin/bashforjin`ls$1/*/*_nv.tsv`#我的目标文件是以_nv.tsv结尾的,所以将他们全列出dojj=${j##*/}jjj=${jj%_*}echo$jjj>>testnv.txt......
  • SUPERVISOR监控tomcat配置文件
    Supervisor安装教程参考:https://www.cnblogs.com/brad93/p/16639953.htmltomcat安装教程参考:https://www.cnblogs.com/brad93/p/16646286.html 下方为Supervisor管理to......
  • ipa上传AppStore
    将ipa提交到AppStore需要Mac电脑操作,现在大部分的程序员都是使用混合开发平台windows系统的电脑,自己装虚拟机过程又繁琐。使用此工具只需要网页上点两下帮你完成这些鸡毛......
  • 给正在运行的mongodb启动添加配置文件
    因为一开始启动容器的时候就没有指定配置文件,无论怎么修改容器中的/etc/mongd.conf.org文件都无法生效所以直接修改启动脚本添加$@的参数实现1、复制容器中的文件/usr/lo......
  • 上传文件大小配置(转载)
    https://blog.csdn.net/weixin_48187792/article/details/108142478?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166201404316781432944413%2522%252C%2522......
  • [CSharpTips]C# 读写INI文件
    读写.ini文件工具可以直接使用usingSystem;usingSystem.Collections.Generic;usingSystem.IO;usingSystem.Runtime.InteropServices;usingSystem.Text;names......
  • Blog如何能实现直接粘贴把图片上传到服务器中
    ​ 1.编辑器修改(可选)1.1在 ueditor/config.json 中添加代码块    /* 上传word配置 */    "wordActionName":"wordupload",/* 执行上传视频的action......
  • logback.xml 配置文件
    logback.xml<?xmlversion="1.0"encoding="UTF-8"?><configuration><!--定义日志文件的存储地址勿在LogBack的配置中使用相对路径--><!--<propertynam......
  • 博客如何能实现直接粘贴把图片上传到服务器中
    ​ 百度ueditor新增的将word内容导入到富文本编辑框的功能怎么没有啊,...ueditor实现word文档的导入和下载功能的方法:1、UEditor没有提供word的导入功能,只能说是粘贴复......
  • wordpress如何能实现直接粘贴把图片上传到服务器中
    ​ 当前功能基于PHP,其它语言流程大抵相同。大概流程:1.将docx文件上传到服务器中2.使用PHPoffice/PHPword实现将word转换为HTML3.将HTML代码返回并赋值到编辑器中......