博客
关于我
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/

    你可能感兴趣的文章
    NLog 自定义字段 写入 oracle
    查看>>
    NLog类库使用探索——详解配置
    查看>>
    NLP 基于kashgari和BERT实现中文命名实体识别(NER)
    查看>>
    NLP 模型中的偏差和公平性检测
    查看>>
    Vue3.0 性能提升主要是通过哪几方面体现的?
    查看>>
    NLP 项目:维基百科文章爬虫和分类【01】 - 语料库阅读器
    查看>>
    NLP_什么是统计语言模型_条件概率的链式法则_n元统计语言模型_马尔科夫链_数据稀疏(出现了词库中没有的词)_统计语言模型的平滑策略---人工智能工作笔记0035
    查看>>
    NLP三大特征抽取器:CNN、RNN与Transformer全面解析
    查看>>
    NLP学习笔记:使用 Python 进行NLTK
    查看>>
    NLP度量指标BELU真的完美么?
    查看>>
    NLP的不同研究领域和最新发展的概述
    查看>>
    NLP的神经网络训练的新模式
    查看>>
    NLP采用Bert进行简单文本情感分类
    查看>>
    NLP问答系统:使用 Deepset SQUAD 和 SQuAD v2 度量评估
    查看>>
    NLP项目:维基百科文章爬虫和分类【02】 - 语料库转换管道
    查看>>
    NLP:使用 SciKit Learn 的文本矢量化方法
    查看>>
    nmap 使用方法详细介绍
    查看>>
    Nmap扫描教程之Nmap基础知识
    查看>>
    nmap指纹识别要点以及又快又准之方法
    查看>>
    Nmap渗透测试指南之指纹识别与探测、伺机而动
    查看>>