Vue中实现图片上传,上传后图片回显,存储图片到服务器 【使用对象存储OSS】
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
文章主旨:本文详细介绍了在Spring Boot和Vue前后端分离项目中,通过服务端签名后直传阿里云OSS实现图片上传、数据库仅存储URL的完整方案与代码实现。
关键要点:
- 服务端签名直传流程:用户请求应用服务器获取Policy和签名 → 应用服务器返回签名信息 → 客户端使用POST表单直传文件至OSS,无需暴露AccessKey,安全性高。
- Spring Boot集成OSS:通过
aliyun-oss-spring-boot-starter依赖,配置accessKey、secretKey、endpoint,注入OSSClient完成文件上传/下载操作。 - 后端接口实现:
OssController中的/oss/policy接口生成上传Policy、签名、目录等参数返回前端,限制文件大小、设置过期时间。 - 前端Vue组件:封装单文件上传组件,调用后端获取签名,通过Element UI的
el-upload实现图片上传、回显,上传成功后返回完整URL供父组件使用。 - 安全与配置:使用Nacos进行动态配置管理,关闭回调功能(服务端签名直传场景),同时支持同名覆盖禁止等OSS特性。
内容结构:
前言
数据库保存图片访问地址而非文件本身,本文讲解如何将图片保存到服务器(OSS),数据库存储URL。流程包括服务端签名直传、Spring Boot接入OSS、前端Vue组件实现。
1. 服务端签名后直传
流程说明
基于Post Policy规则,服务端签名后通过表单直传OSS,安全性高于客户端签名直传。
实现步骤
- 用户向应用服务器请求上传Policy和签名(通过
upload.js设置服务器URL,客户端发送GET请求)。 - 应用服务器返回上传Policy和签名(json响应包含accessid、policy、signature等)。
- 用户使用POST方法向OSS发送文件上传请求,携带
key、policy、OSSAccessKeyId等字段,可设置x-oss-forbid-overwrite防止覆盖。
1.2 Aliyun Spring Boot OSS 示例(接入微服务)
1.2.1 简略说明
针对Spring Cloud应用使用OSS进行云端文件存储(如电商商品图片),可使用OSS starter简化集成。
1.2.2 步骤
- 在pom.xml引入
aliyun-oss-spring-boot-starter依赖。 - 在配置文件(如application.properties)配置accessKey、secretKey、endpoint。
- 注入
OSSClient,进行文件上传下载操作。
2. 项目中实际应用
2.1 后端设置
创建专门处理第三方服务的子工程,配置pom(spring-cloud-starter-alicloud-oss)和application.yml(nacos注册、OSS配置)。编写OssController的/oss/policy接口,生成上传Policy、签名、host、dir等参数,返回给前端。
2.2 前端设置
封装singleUpload Vue组件:通过beforeUpload调用后端policy接口获取签名信息,在handleUploadSuccess中拼接文件URL并触发emitInput更新父组件v-model,实现上传成功后的回显。
2.3 实现的效果
图片上传功能演示(原文附效果图,此处概括为“图片上传成功并可回显URL”)。
文章总结:本文是一篇完整的后端+前端技术教程,系统地讲解了基于阿里云OSS的服务端签名直传方案,适合需要实现安全文件上传并存储URL的Web开发者参考。
热爱技术的小郑
CSDN 2022博客之星后端领域TOP 1;专家博主官方认证;全网10W+粉丝;主要用公众号分享纯干货知识,前沿技术、实战项目开发经验、优秀项目源码案例等。我坚信总有一篇文章对你有用
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
白皮书上线