springboot + element-plus实现文件上传

springboot + element-plus实现文件上传

环境

jdk17 + vue3

效果

在这里插入图片描述

后端

后端上传图片后返回图片的url
前端得到结果后在页面展示

package com.example.demo.controller;

import com.example.demo.util.Res;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

@Slf4j
@RestController
@RequestMapping("/upload")
public class UploadController {

    private final ResourceLoader resourceLoader;

    public UploadController(ResourceLoader resourceLoader) {
        this.resourceLoader = resourceLoader;
    }
    @PostMapping("/file")
    public Res<Object> upload(@RequestParam("file")  MultipartFile file, HttpServletRequest request){
        try{
            File dir = new File(resourceLoader.getResource("classpath:/static/").getFile(), "upload");
            if (!dir.exists()) {
                dir.mkdirs();
            }

            String fileName = UUID.randomUUID().toString();

            file.transferTo(new File(dir.getAbsolutePath() + File.separator + fileName + ".png"));

            String url = request.getScheme() + "://" +request.getServerName() +":"+request.getServerPort() + "/upload/" +fileName +".png";

            return Res.success("文件上传成功",url);
        }catch (Exception ex) {
            return Res.error("文件上传失败");
        }
    }
}

前端

用的Element-plus的upload组件
handleAvatarSuccess 文件上传成功的回调
在这个案例中我们把上传成功后的url赋值给imageUrl 方便在前端展示

<script setup>
import { ElMessage } from 'element-plus';
import { ref } from 'vue';


const imageUrl = ref("")

const handleAvatarSuccess = (res, file) => {
    if (res.code !== 200) {
        return ElMessage.error("文件上传失败");
    }
    imageUrl.value = res.data
    return ElMessage.success("文件上传成功");
}

const beforeAvatarUpload = (rawFile) => {
    if (rawFile.type !== 'image/jpeg' && rawFile.type !== 'image/png' && rawFile.type !== 'image/jpg') {
        ElMessage.error('Avatar picture must be JPG/PNG/JPEG format!')
        return false
    } else if (rawFile.size / 1024 / 1024 > 2) {
        ElMessage.error('Avatar picture size can not exceed 2MB!')
        return false
    }
}
</script>

<template>
    <div class="upload">
        <el-upload class="avatar-uploader" action="http://127.0.0.1:8000/upload/file" :show-file-list="false"
            :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
            <img v-if="imageUrl" :src="imageUrl" class="avatar" />
            <el-icon v-else class="avatar-uploader-icon">
                <Plus />
            </el-icon>
        </el-upload>
    </div>
</template>

<style scoped>
.avatar-uploader .avatar {
    width: 178px;
    height: 178px;
    display: block;
}
</style>

<style>
.avatar-uploader .el-upload {
    border: 1px dashed var(--el-border-color);
    border-radius: 6px;
    cursor: pointer;
    position: relative;
    overflow: hidden;
    transition: var(--el-transition-duration-fast);
}

.avatar-uploader .el-upload:hover {
    border-color: var(--el-color-primary);
}

.el-icon.avatar-uploader-icon {
    font-size: 28px;
    color: #8c939d;
    width: 178px;
    height: 178px;
    text-align: center;
}
</style>
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
实现Spring Boot Vue Element UI Mybatis-Plus的文件分享,可以按照以下步骤进行: 1. 首先,需要搭建一个基于Spring Boot后端应用程序。使用Mybatis-Plus来操作数据库,设计合适的实体类和数据库表,用于存储文件的相关信息,例如文件名、路径、大小等。 2. 在后端应用程序中创建一个文件上传的接口,用于接收前端传递的文件。可以使用Spring Boot内置的MultipartFile类来处理文件上传,将文件保存到指定的目录中,并将文件相关信息保存到数据库中。 3. 创建一个文件下载的接口,用于访问和下载已上传的文件。通过接口可以获取文件的相关信息,包括文件的路径和文件名。使用Java的File类或者相关的工具类来读取文件,并将文件以流的形式返回给前端。 4. 在前端应用程序中使用Vue和Element UI来实现文件分享页面。可以设计一个文件列表的组件,展示已上传的文件信息,例如文件名、大小、上传时间等。使用Element UI的Table组件可以方便地展示数据。 5. 在文件列表组件中,为每个文件增加下载功能的按钮或链接。按钮或链接的点击事件调用后端提供的文件下载接口,将文件下载到用户本地。 6. 可以考虑增加文件的搜索和排序功能,方便用户查找和管理文件。可以使用Element UI的Input组件和Table组件的排序功能来实现。 7. 为了提高用户体验,可以加入文件预览的功能。可以使用第三方插件,如Viewer.js,来实现文件的在线预览。 总结来说,实现Spring Boot Vue Element UI Mybatis-Plus的文件分享需要搭建一个后端应用程序来处理文件的上传和下载,使用数据库存储文件相关信息;在前端应用程序中使用Vue和Element UI来展示和管理文件,实现文件的搜索、排序和预览功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亦简_yz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值