当前位置: 首页 > article >正文

在Uniapp中使用阿里云OSS插件实现文件上传

在开发小程序时,文件上传是一个常见的需求。阿里云OSS(Object Storage Service)是一个强大的云存储服务,可以帮助我们高效地存储和管理文件。本文将介绍如何在Uniapp小程序中使用阿里云OSS插件实现文件上传功能。

1. 准备工作

首先,我们需要在Uniapp项目中引入阿里云OSS插件。插件的地址为:https://ext.dcloud.net.cn/plugin?id=5416。在HBuilderX中打开项目,找到manifest.json文件,在App原生插件配置中勾选该插件。

2. 初始化OSS插件

在使用OSS插件之前,我们需要对其进行初始化。初始化时需要配置STS服务器地址、OSS的Endpoint以及本地文档路径。以下是一个初始化的示例代码:

var oss = uni.requireNativePlugin("MZ-AliyunOss");

init() {
    var self = this;
    oss.init({
        stsServer: 'https://xxx.xxx.com/api/createVideo/ossToken', // STS服务器地址
        endPoint: "https://oss-cn-shanghai.aliyuncs.com", // OSS的Endpoint
        docPath: plus.io.convertLocalFileSystemURL("_doc"), // 本地文档路径
    }, ret => {
        console.log("---------------------------ret", ret) 
    });
},

在初始化时,stsServer是获取临时凭证的服务器地址,endPoint是OSS服务的访问地址,docPath是本地文件的存储路径。

3. 上传文件

初始化完成后,我们可以使用OSS插件上传文件。以下是一个上传视频文件的示例代码:

recordVideo() {
    let that = this;
    uni.chooseVideo({
        sourceType: ["camera", "album"], // 从相机拍摄或相册选择
        compressed: false, // 不压缩视频
        maxDuration: this.selData.subVideoLen, // 限制拍摄时长
        camera: "back", // 使用后置摄像头
        success: (res) => {
            console.log("拍摄成功", res);
            uni.showLoading({
                title: "上传中...",
                mask: true, // 遮罩层,防止用户操作
            });

            let pathArr = res.tempFilePath.split("/");
            let fileName = pathArr[pathArr.length - 1];
            let fileExt = fileName.split(".")[1];
            let videoName = fileName.split(".")[0] + "." + fileExt;
            let videopath = plus.io.convertLocalFileSystemURL(res.tempFilePath);

            oss.setUploadObjectListener({}, ret => {
                console.log(ret); 
                
                if(ret.eventType=='onSuccess'){
                    let awemeUrl = "https://xxx.oss-cn-shanghai.aliyuncs.com/dzjz/" + videoName;
                    console.log("上传成功,文件地址:", awemeUrl);
                } 
            });

            oss.uploadObject({
                bucket: 'xxx', // OSS的Bucket名称
                key: 'dzjz/'+videoName, // 文件在OSS中的存储路径
                path: videopath // 本地文件路径
            }, ret => { 
                console.log("上传结果:", ret);
            }); 
        },
        fail: (err) => {
            console.error("拍摄失败", err.errMsg);
        },
    });
},

上传失败回调

在这里插入图片描述

在上传文件时,我们首先使用uni.chooseVideo方法选择或拍摄视频文件。然后,通过oss.uploadObject方法将文件上传到OSS。上传过程中,可以通过oss.setUploadObjectListener监听上传状态,当上传成功时,可以获取到文件的访问地址。

4. 总结

通过以上步骤,我们可以在Uniapp小程序中轻松实现文件上传功能。阿里云OSS插件提供了简单易用的API,使得文件上传变得非常方便。希望本文对你有所帮助,如果有任何问题,欢迎在评论区留言讨论。

注意:在实际使用中,请将代码中的xxx替换为实际的OSS配置信息,如Bucket名称、STS服务器地址等。


http://www.kler.cn/a/542306.html

相关文章:

  • AJAX XML技术详解
  • RAG 在智能答疑中的探索
  • 算法跟练第十弹——栈与队列
  • 基于YoloV11和驱动级鼠标模拟实现Ai自瞄
  • 什么是Java虚拟机(JVM)?它的作用是什么?
  • 在CT107D单片机综合训练平台上实现外部中断控制LED闪烁
  • 高级java每日一道面试题-2025年02月03日-服务器篇[Nginx篇]-Nginx是如何处理一个HTTP请求的呢 ?
  • 【leetcode】滑动窗口刷题总结
  • Python 爬虫基础教程
  • 物联网水质监测系统设计与实现/基于STM32的水产养殖云监控系统设计
  • Kubernetes 最佳实践:Top 10 常见 DevOps/SRE 面试问题及答案
  • Java、Go、Rust、Node.js 的内存占比及优缺点分析
  • DeepSeek投喂数据(训练AI)
  • DeepSeek模拟阿里面试——Mysql
  • Linux性能优化实战:从CPU到磁盘I/O
  • FFmpeg + OpenGL ES 美颜相机教程大纲
  • jupyter notebook中3种读图片的方法_与_图片翻转(上下翻转,左右翻转,上下左右翻转)
  • 【Django】 templates模板与static静态文件
  • oa二开问题
  • ①电视盒子刷linux系统之armbian
  • vue3: 通过template解析渲染
  • 第四篇:放大电路的“子弹时间”——车载音频与传感器信号链设计
  • 重庆西站公路桥梁自动化监测
  • Ansible内置模块之cron
  • [特殊字符] 基于 FastAPI 和 React 构建车牌号识别网站
  • C#中的序列化和反序列化