微信小程序实现视频功能(一):视频上传

article/2025/10/29 14:21:41

微信小程序开发实现视频的上传(官方提供了API,基本直接调用就可以了)

一、效果图:

在这里插入图片描述

二、代码实现

1. video.wxml
<!--pages/video/video.wxml-->
<view class="main"><view class="playerInfo"><view class="video" wx:if="{{clickFlag}}"><image class="videoContent" wx:if="{{poster}}" src="{{poster}}" mode="aspectFill" bindtap="chooseVideo"/><view class="videoContent"  wx:else bindtap="chooseVideo" ><image class="playImg" src="../images/uploadVideo.png" mode="aspectFill"/></view></view><view class="video" wx:else><image class="videoContent" wx:if="{{poster}}" src="{{poster}}" mode="aspectFill"/><view class="videoContent"  wx:else><image class="playImg" src="../images/uploadVideo.png" mode="aspectFill"/></view></view></view><view class="footerbtn"><button type="default" style="width:40%;" bindtap = "chooseVideo" wx:if="{{clickFlag}}">上传视频</button><button type="default" style="width:40%;color:#cccccc;" wx:else>上传视频</button><button type="primary" style="width:40%;" bindtap = "saveVideo">保存</button></view><view class="videoUrlResult" wx:if="{{videoUrl}}" ><view class="title">上传的视频:</view><!--autoplay="true" 视频自动播放--><video class="videoContent" style="width: 90%;margin-left: 5%;margin-top: 20rpx;" show-center-play-btn="true" src="{{videoUrl}}" object-fit="fill" bindfullscreenchange="fullscreenchange"></video></view>
</view>
2. video.js
// pages/video/video.js
var app=getApp()
Page({/*** 页面的初始数据*/data: {videoUrl:"",poster:"",clickFlag:true //防重复点击 },/*** 生命周期函数--监听页面加载*/onLoad: function (options) {},/*** 生命周期函数--监听页面显示*/onShow: function () {},/*** 拍摄或选择视频并上传服务器*/chooseVideo: function () {console.log("chooseVideo")this.setData({clickFlag: false})let that = this//1.拍摄视频或从手机相册中选择视频wx.chooseVideo({sourceType: ['album', 'camera'], // album 从相册选视频,camera 使用相机拍摄// maxDuration: 60, // 拍摄视频最长拍摄时间,单位秒。最长支持60秒camera: 'back',//默认拉起的是前置或者后置摄像头,默认backcompressed: true,//是否压缩所选择的视频文件success: function(res){//console.log(res)let tempFilePath = res.tempFilePath//选择定视频的临时文件路径(本地路径)let duration = res.duration //选定视频的时间长度let size = parseFloat(res.size/1024/1024).toFixed(1) //选定视频的数据量大小// let height = res.height //返回选定视频的高度// let width = res.width //返回选中视频的宽度that.data.duration = durationif(parseFloat(size) > 100){that.setData({clickFlag: true,duration: ''})let beyondSize = parseFloat(size) - 100wx.showToast({title: '上传的视频大小超限,超出'+beyondSize+'MB,请重新上传',//image: '',//自定义图标的本地路径,image的优先级高于iconicon:'none'})}else{//2.本地视频资源上传到服务器that.uploadFile(tempFilePath)}},fail: function() {// fail},complete: function() {// complete}})},/*** 将本地资源上传到服务器* */uploadFile:function(tempFilePath){let that = thislet third_session = wx.getStorageSync('third_session')wx.showLoading({title: '上传进度:0%',mask: true //是否显示透明蒙层,防止触摸穿透})const uploadTask = wx.uploadFile({url: 'http://192.168.0.77:8083/upload/uploadVideo',//开发者服务器地址filePath:tempFilePath,//要上传文件资源的路径(本地路径)name:'file',//文件对应key,开发者在服务端可以通过这个 key 获取文件的二进制内容// header: {}, // 设置请求的 headerformData: {third_session: third_session}, // HTTP 请求中其他额外的 form datasuccess: function(res){console.log("uploadFile",res)// successlet data = JSON.parse(res.data)wx.hideLoading()if(data.returnCode == 200){that.setData({videoUrl: data.videoUrl,poster: data.imgUrl,duration: that.data.duration,clickFlag:true})wx.showToast({title: '上传成功',icon: 'success'})}else{that.setData({videoUrl: '',poster: '',duration: '',clickFlag:true})wx.showToast({title: '上传失败',icon: 'none'})}},fail: function() {// failwx.hideLoading()this.setData({videoUrl: '',poster: '',duration: '',clickFlag:true})wx.showToast({title: '上传失败',icon: 'none'})}})//监听上传进度变化事件uploadTask.onProgressUpdate((res) =>{wx.showLoading({title: '上传进度:'+res.progress+'%',mask: true //是否显示透明蒙层,防止触摸穿透})console.log("上传进度",res.progress)console.log("已经上传的数据长度,单位 Bytes:",res.totalBytesSent)console.log("预期需要上传的数据总长度,单位 Bytes:",res.totalBytesExpectedToSend)})},//保存数据库saveVideo(){//调用服务器保存视频信息接口}
})
3. video.wxss
/* pages/video/video.wxss */
.main{width:100%;
}
.playerInfo{margin: 20rpx 20rpx 0 20rpx;
}
.video{border :2rpx solid #cccccc;
}
.videoContent{display: flex;align-items: center;justify-content: center;width:100%;height: 324rpx;position: relative;
}
/*播放小图标*/
.playImg{position: absolute;top: 36%;left:46%;width:64rpx;height: 64rpx;
}
.footerbtn{display: flex;margin-top: 20rpx;
}
.button{width:40%;
}
.videoUrlResult{width: 100%;margin-top: 20rpx;
}
.videoUrlResult .title{ font-size: 28rpx;font-weight: bold;color: red;margin-left: 20rpx;
}
4. video.json
{"navigationBarTitleText": "视频上传","usingComponents": {}
}

需要源码的可点击此处获取
后台服务器代码


http://chatgpt.dhexx.cn/article/RGOT0rSU.shtml

相关文章

微信小程序视频+微信视频号视频下载教程

之前「随书光盘」那期文章说了要出一期文章来教下「微信小程序视频」怎么下载 阿虚小小研究了一下&#xff0c;今天就来分享一下教程 同时这篇文章也会顺便教下微信「视频号」的视频怎么下载 ▍1 微信小程序视频怎么下载&#xff1f; 以下要说的是真限制在微信小程序内观看的…

下载微信小程序中的视频

工具准备&#xff1a; Fiddler 我这里用的5.0的版本。&#xff08;这个用来抓取视频下载地址&#xff09; Internet Download Manager&#xff08;idm&#xff09;版本6.37&#xff08;这个用来下载视频&#xff09; 步骤&#xff1a; 打开Fiddler如下图配置后抓包 2.登录PC版微…

微信小程序——video视频播放

1、功能介绍 可以实现视频的播放暂停&#xff0c;发送弹幕&#xff0c;获取视频所处位置等。 2、video组件 2.1、用处 video组件常用于视频的播放&#xff0c;默认宽度为300px&#xff0c;高度为225px。 2.2、属性 属性说明src视频的资源地址loop是否循环播放&#xff0c;…

视频播放微信小程序

2022年夏季《移动软件开发》实验报告 一、实验目标 1、掌握视频列表的切换方法&#xff1b;2、掌握视频自动播放方法&#xff1b;3、掌握视频随机颜色弹幕效果。 二、实验步骤 列出实验的关键步骤、代码解析、截图。 1、创建项目 填好项目名称、目录、AppID等信息后&…

微信小程序视频基本操作

微信小程序视频基本操作 1、视频1.1 wx.createVideoContext(string id,Object this)接口1.1.2 VideoContext对象常用函数1.1.3 小案例 1.2 wx.chooseVideo()接口object.success 回调函数参数Object res 示例代码 1.2.1 小案例 1.3 wx.saveVideoToPhotosAlbum(Object object)接口…

【微信小程序】视频播放小程序

课程&#xff1f;中国海洋大学22夏《移动软件开发》实验名称实验3&#xff1a;视频播放小程序 一、实验目标 1、掌握视频列表的切换方法&#xff1b; 2、掌握视频自动播放方法&#xff1b; 3、掌握视频随机颜色弹幕效果。 二、实验步骤 一、项目创建 二、页面配置 创建页面…

微信小程序如何使用视频组件

小程序中可以使用视频组件来播放自己想要展示的视频&#xff0c;具体步骤如下 一、添加视频组件 1、点击“店铺”——“装修店铺”——“编辑”&#xff0c;进入小程序页面编辑。 2、点击“组件库”——“视频”&#xff0c;页面会添加视频组件&#xff0c;点击视频组件的“编…

PHP实现页面静态化、纯静态化及伪静态化

概念 php静态化分为&#xff1a;纯静态化 和 伪静态化&#xff1b; 纯静态化又分为&#xff1a;局部静态化 和 完全静态化 纯静态化&#xff1a;是把PHP生成的动态页面保存成静态的html文件&#xff0c;用户访问该静态页面&#xff0c;而不是用户每一次访问都重新生成一张相…

SpringBoot整合Thymleaf实现页面静态化

文章整理题材来源于传智播客乐优商城项目实战&#xff01; 1. 问题需求分析 在做乐优商城时&#xff0c;页面是通过Thymeleaf模板引擎渲染后返回到客户端。当商品详情页数据渲染时&#xff0c;在后台需要大量的数据查询&#xff0c;而后渲染得到HTML页面。在用户访问量大的情况…

网站页面静态化(二)thymeleaf生成

今年是农历大年初三&#xff0c;在这里首先给各位朋友拜个年&#xff0c;祝大家新年快乐&#xff0c;虎年大吉大利&#xff0c;事业蒸蒸日上。过年无事&#xff0c;把页面静态化技术整理整理。本文将以thymeleaf为例子&#xff0c;说明在springboot当中&#xff0c;如何基于thy…

HTML页面静态化技术

随着网站的内容的增多和用户访问量的增多&#xff0c;无可避免的是网站加载会越来越慢&#xff0c;受限于带宽和服务器同一时间的请求次数的限制&#xff0c;我们往往需要在此时对我们的网站进行代码优化和服务器配置的优化。 此文已Django的电商网站为例&#xff08;处理高并…

Thymeleaf动态页面静态化

Thymeleaf 目标 Thymeleaf的介绍Thymeleaf的入门Thymeleaf的语法及标签搜索页面渲染商品详情页静态化功能实现 1.Thymeleaf介绍 1动态页面&#xff1a; 通过执行asp、php、jsp和.net等程序生成客户端网页代码的网页。通常可以通过网站后台管理系统对网站的内容进行更新管理…

Java使用Freemarker页面静态化生成实现

Java使用Freemarker页面静态化生成实现 页面静态化其实就是将原来的动态网页(例如通过ajax请求动态获取数据库中的数据并展示的网页)改为通过静态化技术生成的静态网页&#xff0c;这样用户在访问网页时&#xff0c;服务器直接给用户响应静态html页面&#xff0c;没有了动态查询…

CMS-页面静态化技术

页面静态化技术 页面静态化技术是什么&#xff1f; 页面静态化主要运用在一些大型网站&#xff0c;有大量信息需要与数据库交互。比如大型电商网站京东&#xff0c;淘宝 &#xff0c;天猫等。电商网站最大的特点是什么&#xff1f;数据庞大&#xff0c;页面众多。那么我们都知…

java页面静态化

1.概念 页面静态化&#xff0c;其实就是将动态生成的jsp页面&#xff0c;变成静态的HTML页面&#xff0c;让用户直接访问。 2.优点 &#xff08;1&#xff09;加快页面打开浏览速度&#xff0c;静态页面无需连接数据库&#xff0c;打开速度较动态页面有明显提高。 &#xff…

页面静态化流程

本文首先采用CMS管理页面。 首先我们知道模板数据模型输出&#xff0c;页面静态化需要准备数据模型和模板&#xff0c;先知道数据模型的结构才可以编写模板&#xff0c;因为在模板中要引用数据模型中的数据&#xff0c;那么下面我来系统讲解CMS页面数据模型获取、模板管理及静…

django笔记--页面静态化

什么是页面静态化&#xff1a; 1&#xff09;减少数据库查询次数 2&#xff09;提高页面响应效率 页面静态化的作用&#xff1a; 1&#xff09;将动态渲染生成的页面结果保存成html文件&#xff0c;放到静态文件服务器中。 2&#xff09;用户直接去静态服务器&#xff0c;访问…

PHP实现页面静态化

为什么要页面静态化&#xff1f; 1.动态文件执行过程:语法分析-编译-运行 2.静态文件&#xff0c;不需要编译&#xff0c;减少了服务器脚本运行的时间&#xff0c;降低了服务器的响应时间&#xff0c;直接运行&#xff0c;响应速度快&#xff1b;如果页面中一些内容不经常改动…

【Java】页面静态化

1.页面静态化介绍 2.Freemarker介绍 3.Freemarker入门案例 3.1环境搭建 创建maven工程并导入Freemarker的maven坐标 <dependency><groupId>freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.23</version> &…

网站优化---页面静态化技术

一&#xff1a; 首先先区分一下动态页面和静态页面的区别 动态文件&#xff1a;PHP脚本、Java脚本等 动态文件的执行过程&#xff1a;词法、语法分析 -> 编译 -> 渲染输出 静态文件&#xff1a;HTML文件 从加载速度上可以看出&#xff0c;静态文件明显比动态文件速度…