博客
关于我
elementui+Vue+OSS使用图片上传和删除
阅读量:512 次
发布时间:2019-03-07

本文共 4673 字,大约阅读时间需要 15 分钟。

阿里云OSS文件上传与管理系统开发

系统功能概述

本系统通过阿里云OSS(Object Storage Service)实现文件上传、管理及删除功能,支持图片上传、新增、修改及批量删除操作。系统采用Vue.js前端框架与Spring Boot后端框架搭建,实现了用户友好的操作界面和高效的文件管理功能。

系统技术架构

1. 依赖管理

  • 阿里云OSS SDK:用于实现与阿里云OSS的交互,版本号为3.8.0。
  • Spring Boot:作为后端框架,负责处理HTTP请求及业务逻辑。
  • Vue.js:作为前端框架,负责实现用户界面及交互功能。
  • Element UI:用于构建美观的用户界面组件。

2. 后端配置

1. 阿里云OSS配置

  • API访问地址https://jjjqqq.oss-cn-beijing.aliyuncs.com/
  • 账号信息
    • Access Key IDLTAI4Fzm3c6EmUexCHLvZNcm
    • Access Key Secretb8OrjTpYWW3sZSlimy4sxr2WJuNX09
  • 文件存储路径photo/

2. 文件上传逻辑

  • 文件名称处理:保留原始文件扩展名,生成唯一随机名称。
  • 文件上传:使用阿里云OSS客户端进行文件上传操作。
  • 文件路径返回:返回上传成功后的文件路径,供前端展示。

3. 前端页面功能

1. 主界面操作

  • 新增按钮:点击后弹出文件上传表单。
  • 批量删除按钮:支持多选项删除,前端与后端接口联动。
  • 数据表格:显示文件列表,支持排序、过滤及分页操作。
  • 图片预览:在表格中直接展示图片,支持鼠标悬停查看。

2. 新增页面

  • 表单提交:支持单选文件上传,自动处理图片路径。
  • 表单校验:在提交前验证文件是否有效,避免无效提交。

3. 修改页面

  • 表单数据回显:在修改前,展示当前数据,减少重复填写。
  • 图片删除:在修改前删除旧图片,避免数据冗余。

代码实现细节

1. 后端控制器

@RestController@RequestMapping("/file")public class FileController {    // 阿里云OSS配置    private static final String ENDPOINT = "oss-cn-beijing.aliyuncs.com";    private static final String ACCESS_KEY_ID = "LTAI4Fzm3c6EmUexCHLvZNcm";    private static final String ACCESS_KEY_SECRET = "b8OrjTpYWW3sZSlimy4sxr2WJuNX09";    private static final String BACKET_NAME = "jjjqqq";    private static final String FOLDER = "photo/";    private static final String URl = "https://jjjqqq.oss-cn-beijing.aliyuncs.com/";    @CrossOrigin    @RequestMapping("uploadPhoto")    public Map
uploadPhoto(MultipartFile file) { Map
map = new HashMap<>(); OSSClient ossClient = null; InputStream inputStream = null; try { ossClient = new OSSClient(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET); String filename = file.getOriginalFilename(); String suffix = filename.substring(filename.lastIndexOf(".")); String newFileName = UUID.randomUUID().toString() + suffix; inputStream = file.getInputStream(); ossClient.putObject(BACKET_NAME, FOLDER + newFileName, inputStream); map.put("filePath", URl + FOLDER + newFileName); } catch (Exception e) { e.printStackTrace(); } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } if (ossClient != null) { ossClient.shutdown(); } } return map; }}

2. 前端Vue.js逻辑

export default {    data() {        return {            tableData: [],            multipleSelection: [],            dialogFormVisible: false,            form: {                photo: ""            },            total: 0,            currentPage: 1,            pageSize: 5        }    },    methods: {        queryDrug() {            this.$axios.get("http://localhost:8080/drug/queryDrug", {                params: {                    currentPage: this.currentPage,                    pageSize: this.pageSize                }            }).then(response => {                this.tableData = response.data.list;                this.total = response.data.total;            });        },        handleAvatarSuccess(res) {            this.form.photo = res.filePath;        },        beforeAvatarUpload(file) {            const isJPG = file.type === 'image/jpeg';            const isLt2M = file.size / 1024 / 1024 < 2;            if (!isJPG) {                this.$message.error('图片格式错误,仅支持JPG!');            }            if (!isLt2M) {                this.$message.error('图片大小超出限制,建议不超过2MB!');            }            return isJPG && isLt2M;        }    }}

3. 工具类OSSUtil

public class OSSUtil {    private static final String ENDPOINT = "oss-cn-beijing.aliyuncs.com";    private static final String ACCESS_KEY_ID = "LTAI4Fzm3c6EmUexCHLvZNcm";    private static final String ACCESS_KEY_SECRET = "b8OrjTpYWW3sZSlimy4sxr2WJuNX09";    private static final String BACKET_NAME = "jjjqqq";    private static final String FOLDER = "photo/";    private static final String URl = "https://jjjqqq.oss-cn-beijing.aliyuncs.com/";    public static void deleteFile(String fileName) {        OSSClient ossClient = new OSSClient(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);        String replaceName = fileName.replace(URl, "");        ossClient.deleteObject(BACKET_NAME, replaceName);        ossClient.shutdown();    }}

系统功能亮点

  • 高效的文件上传:支持多种文件格式上传,自动处理文件命名。
  • 用户友好的界面:通过Element UI构建直观操作界面,减少用户学习成本。
  • 灵活的数据管理:支持新增、修改及批量删除操作,满足不同场景需求。
  • 高效的图片管理:在修改操作前自动删除旧图片,减少存储空间浪费。
  • 良好的扩展性:通过模块化设计,便于后续功能扩展和维护。
  • 系统优势

    • 高效性:通过异步处理和分页技术,提升文件管理效率。
    • 可扩展性:支持不同场景的文件上传和管理需求,适应业务增长。
    • 用户体验:直观的界面和操作流程,减少用户学习成本。

    总结

    本系统通过结合前端与后端技术,实现了阿里云OSS文件管理功能,具备易用性和扩展性,适合需要高效文件管理的应用场景。

    转载地址:http://jpljz.baihongyu.com/

    你可能感兴趣的文章
    nginx配置域名和ip同时访问、开放多端口
    查看>>
    Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
    查看>>
    Nginx配置如何一键生成
    查看>>
    Nginx配置实例-负载均衡实例:平均访问多台服务器
    查看>>
    Nginx配置文件nginx.conf中文详解(总结)
    查看>>
    Nginx配置负载均衡到后台网关集群
    查看>>
    ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
    查看>>
    NHibernate学习[1]
    查看>>
    NHibernate异常:No persister for的解决办法
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
    查看>>
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
    查看>>
    NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
    查看>>
    NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
    查看>>
    Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
    查看>>
    NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
    查看>>