vue-前端oss直传

本文介绍了在Vue项目中如何利用阿里云OSS进行前端直传文件,通过自定义命名规则模拟文件夹效果。内容包括设置跨域规则、引入OSS SDK、创建上传组件以及处理私有和公有文件的访问方式。详细步骤和文档链接已提供。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在vue框架中使用oss直传,前端直接调oss接口,服务端直接将所有文件存在同一个目录下(提高效率),之所以网页上看到有文件夹的区分,是因为根据前端命名方式(一般是自定义文件夹名字加文件名字加时间搓)来制造有文件夹区分的效果,这个命名可以理解成是这个文件的唯一标识。传给后端的时候直接把这个命名传入即可。

1.在阿里云新建配置跨域规则(header嫌麻烦配置成*即可,如不配置会产生跨域问题)

2.引入SDK-js

<script src="http://gosspublic.alicdn.com/aliyun-oss-sdk-4.4.4.min.js"></script>

3.新建组件(我是基于vue-element组件)

3.1 如何上传

 

 const client = new OSS.Wrapper({
          region: _this.region,
          accessKeyId: '',//填入自己的id
          accessKeySecret: '',//填入自己的id
          bucket: _this.bucket
        })

 

client.multipartUpload('重命名后的名字','文件内容
### 关于 RuoYi-Vue-Plus 中 OSS 的配置与使用 #### 1. 配置 OSS 客户端 在 `ruoyi-vue-plus` 项目中,OSS 的配置主要集中在后端模块的 `application.yml` 或者 `application.properties` 文件中。以下是常见的 OSS 配置项: ```yaml spring: cloud: alibaba: oss: endpoint: http://oss-cn-hangzhou.aliyuncs.com # 替换为实际的 Endpoint 地址 access-key-id: your-access-key-id # 替换为您的 Access Key ID access-key-secret: your-access-key-secret # 替换为您的 Access Key Secret bucket-name: your-bucket-name # 替换为您创建的 Bucket 名称 ``` 这些配置用于初始化阿里云 OSS SDK 的客户端实例[^1]。 --- #### 2. 后端接口开发 为了支持前端上传文件到 OSS 并返回 URL,通常需要在后端提供一个文件上传接口。以下是一个简单的示例代码片段: ```java @RestController @RequestMapping("/file") public class FileController { @Resource private OssService ossService; /** * 文件上传至 OSS */ @PostMapping("/upload") public AjaxResult upload(@RequestParam("file") MultipartFile file) { try { String url = ossService.upload(file); // 调用 OSS 服务完成文件上传并获取访问链接 return AjaxResult.success(url); } catch (Exception e) { log.error("文件上传失败", e); return AjaxResult.error(e.getMessage()); } } } ``` 在这个例子中,`ossService.upload()` 方法负责处理文件的实际上传逻辑,并返回文件的公网访问路径[^1]。 --- #### 3. 前端集成 OSS 功能 在前端部分,`ruoyi-vue-plus` 提供了一个通用的文件上传组件 (`@/components/FileUpload`) 和图片上传组件 (`@/components/ImageUpload`)。通过这两个组件可以轻松实现文件或图片的上传功能。 ##### (1)引入组件 确保已经在项目的入口文件(如 `main.js`)中注册了相关组件: ```javascript // main.js import ImageUpload from '@/components/ImageUpload'; Vue.component('ImageUpload', ImageUpload); import FileUpload from '@/components/FileUpload'; Vue.component('FileUpload', FileUpload); ``` ##### (2)页面使用 在具体的业务页面(如 `person.vue`),可以通过如下方式调用 `ImageUpload` 组件来上传图片: ```vue <el-form-item label="证件照" prop="photo"> <image-upload v-model="form.photo"></image-upload> </el-form-item> ``` 当用户选择一张图片时,该组件会自动触发后端接口并将图片上传到 OSS 上,最终将返回的 URL 存储到表单项中[^2]。 --- #### 4. 图片回显 对于已经存在的数据记录,在表格或其他展示场景下可能需要对已上传的图片进行回显操作。此时需要注意的是,如果数据库中保存的是 OSS 对象的唯一标识符(如 `oss_id`),则需要额外请求后端将其转换成可直接访问的 URL。 例如,在表格列定义中可以这样设置: ```vue <el-table-column label="证件照" align="center" prop="photo" width="100"> <template slot-scope="scope"> <!-- 如果 scope.row.photo 是完整的 URL --> <image-preview :src="scope.row.photo" :width="50" :height="50"></image-preview> <!-- 如果 scope.row.photo 只有 oss_id,则需先调用后端 API 获取真实 URL --> <image-preview :src="getPhotoUrl(scope.row)" :width="50" :height="50"></image-preview> </template> </el-table-column> ``` 其中,`getPhotoUrl` 方法可以根据实际情况动态加载图片的真实地址[^2]。 --- #### 5. 注意事项 - **安全性**:为了避免敏感信息泄露,建议启用签名直传模式(PostObject 接口)。这种方式允许前端直接向 OSS 发起 PUT 请求而无需经过应用服务器转发。 - **名绑定**:如果您希望自定义 OSS 访问名,请记得前往阿里云控制台完成 CNAME 设置并与 CDN 加速配合使用。 - **问题**:确认 OSS 所属 Bucket 已开启 CORS 支持,并正确配置 AllowOrigin 字段以匹配前端站点地址。 --- ###
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值