uni-app移动端-H5-微信小程序下载保存图片,文档和视频到手机,带进度条

这篇具有很好参考价值的文章主要介绍了uni-app移动端-H5-微信小程序下载保存图片,文档和视频到手机,带进度条。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

可移步插件地址,可直接导入hbuilderx示例项目查看:
uni-app移动端-H5-微信小程序下载保存图片,文档和视频到手机,带进度条

具体代码如下文章来源地址https://www.toymoban.com/news/detail-645966.html

<template>
	<view class="box">
		<WaterMark></WaterMark>
		<view class="u-m-b-16 u-font-18 u-font-bold">uni-app下载文件</view>
		<view v-for="(item,index) in fileList" :key="index">
			<view v-if="index==0">
				<image :src="item.src" class="imageBox"></image>
			</view>
			<view v-if="index==1" style="word-break: break-all;">{{item.src}}</view>
			<view v-if="index==2"><video :src="item.src" class="imageBox"></video></view>
			<view class="previewBtn u-flex u-row-center u-m-b-60" @click="toDownload(item)">{{item.name}}</view>
		</view>
	</view>
</template>

<script>
	export default {
		components: {},
		data() {
			return {
				fileList: [{
						type: '1',
						name: '下载图片',
						src: 'https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/efd8e280-60a9-11eb-a16f-5b3e54966275.jpg'
					},
					{
						type: '2',
						name: '下载文档',
						src: 'http://storage.xuetangx.com/public_assets/xuetangx/PDF/PlayerAPI_v1.0.6.pdf'
					},
					{
						type: '3',
						name: '下载视频',
						src: 'https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/a876efc0-4f35-11eb-97b7-0dc4655d6e68.mp4',
					},
				]
			};
		},
		onLoad(options) {},
		methods: {
			toDownload(item) {
				// #ifdef H5
				this.downloadH5(item.src)
				// #endif
				// #ifndef H5
				if (item.type == 1) { //下载图片
					this.saveVideoApp(item.src)
				} else if (item.type == 2) { //下载文件
					this.saveFile(item.src)			
				} else { //下载视频
					// #ifdef MP-WEIXIN
					this.getDownVideo(item.src)
					// #endif
					// #ifdef APP-PLUS
					this.saveVideoApp(item.src)
					// #endif
				}
				// #endif
			},
			//下载图片到本地
			downloadH5(url) {
				uni.downloadFile({
					url: url, //仅为示例,并非真实的资源
					success: (res) => {
						console.log(res)
						if (res.statusCode === 200) {
							console.log('下载成功');
							var oA = document.createElement("a");
							oA.download = ''; // 设置下载的文件名,默认是'下载'
							oA.href = res.tempFilePath; //临时路径再保存到本地
							document.body.appendChild(oA);
							oA.click();
							oA.remove(); // 下载之后把创建的元素删除
						}
					}
				});
			},
			//保存文档,不支持h5
			saveFile(url) {
				uni.showLoading()
				uni.downloadFile({ //下载文件资源到本地,返回文件的本地临时路径
					url: url, //网络图片路径
					success: (res) => {
						var filePath = res.tempFilePath;
						//保存到本地
						uni.saveFile({
							tempFilePath: filePath,
							success: function(res) {
								//res.savedFilePath文件的保存路径
								uni.openDocument({
									filePath: res.savedFilePath,
									fileType: 'pdf',
									showMenu: true,
									success: function(res) {
										uni.hideLoading()
									},
									fail: function(err) {
										uni.hideLoading()
									}
								});
							},
							fail() {
								uni.hideLoading()
								console.log('保存失败')
							}
						});
					}
				})
			},
			//微信小程序保存视频
			getDownVideo(url) {
				// 自定义 文件名称
				uni.showLoading({
					mask: true,
					title: '下载中...'
				})
				let fileName = new Date().valueOf();
				const task = uni.downloadFile({
					url: url,
					filePath: wx.env.USER_DATA_PATH + '/' + fileName + '.mp4', //  拼接本地文件路径
					success: (res) => {
						let filePath = res.filePath
						uni.saveVideoToPhotosAlbum({
							filePath,
							success: (res) => {
								uni.showToast({
									title: '下载成功',
									icon: 'success',
								})
								let fileMgr = wx.getFileSystemManager();
								// 删除本地文件
								fileMgr.unlink({
									filePath: wx.env.USER_DATA_PATH + '/' + fileName +
										'.mp4',
									success: function(r) {
										console.log('unlink-getFileSystemManager')
										console.log(r)
									},
								})
							},
							fail(err) {
								uni.showToast({
									title: '保存失败',
									icon: 'none',
								})
							},
							complete(res) {
								console.log('saveVideoToPhotosAlbum-complete')
								console.log(res)
								uni.hideLoading()
							}
						})
					},
					fail(err) {
						uni.showToast({
							title: '下载失败,请稍后再试',
							icon: 'none',
						})
					},
					complete(res) {
						console.log('downloadFiledownloadFiledownloadFiledownloadFiledownloadFile')
						console.log(res)
					}
				})
				task.onProgressUpdate(this.onProgress)
			},
			// 提示下载进度
			onProgress(res) {
				uni.showLoading({
					mask: true,
					title: res.progress ? '下载中' + res.progress + "%" : '下载中...'
				})
			},
			saveVideoApp(url) {
				// #ifdef APP-PLUS
				var showLoading = plus.nativeUI.showWaiting("正在下载"); //创建一个showWaiting对象 
				// #endif
				let task = uni.downloadFile({
					url: url,
					success: res => {
						const {
							statusCode,
							tempFilePath
						} = res
						if (statusCode === 200) { // saveImageToPhotosAlbum  saveVideoToPhotosAlbum  
							uni.saveImageToPhotosAlbum({ //此处也可用saveVideoToPhotosAlbum
								filePath: tempFilePath,
								success: data => {
									console.log('data----------------->', data)
									uni.showToast({
										title: '下载成功,文件已保存到' + data.path,
										icon: 'success',
									})
								},
								complete: (msg) => {
									// #ifdef APP-PLUS
									plus.nativeUI.closeWaiting()
									// #endif
								}
							});
						} else {
							uni.showToast({
								title: '下载失败',
								icon: 'none',
							})
							// #ifdef APP-PLUS
							plus.nativeUI.closeWaiting()
							// #endif
						}
					},
					complete: () => {

					}
				})
				task.onProgressUpdate((res => {
					// console.log('上传进度' + res.progress);
					// console.log('已经上传的数据长度' + res.totalBytesSent);
					// console.log('预期需要上传的数据总长度' + res.totalBytesExpectedToSend);
					showLoading.setTitle("  正在下载" + res.progress + "%  ");
				}))
			},

		}
	};
</script>
<style lang="scss" scoped>
	.box {
		padding: 20rpx 40rpx;

		.imageBox {
			width: 200rpx;
			height: 200rpx;
		}

		.previewBtn {
			height: 60rpx;
			width: 200rpx;
			padding: 24rpx;
			border-radius: 16rpx;
			background-color: #409eff;
			color: #fff;
		}
	}
</style>

到了这里,关于uni-app移动端-H5-微信小程序下载保存图片,文档和视频到手机,带进度条的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小程序-uni-app:将页面(html+css)生成图片/海报/名片,进行下载 保存到手机

    一、需要描述 本文实现,uniapp微信小程序,把页面内容保存为图片,并且下载到手机上。 说实话网上找了很多资料,但是效果不理想,直到看了一个开源项目,我知道可以实现了。 本文以开源项目uniapp-wxml-to-canvas 为蓝本 记录集成的步骤,以供参考。 详细内容可以下载并启

    2024年02月07日
    浏览(56)
  • uni-app:使用 Painter 在微信小程序将当前页面保存为图片

    手机截屏 Painter 实现 方式一:Painter Painter 是一个微信小程序组件,具体介绍和 API 请参考:GitHub文档。 在 GitHub 下载下来之后只需要将 components 下的 painter 文件夹放到项目根目录下的 wxcomponents 文件夹即可。然后就是如何在 uni-app 中使用微信小程序形式的组件,其实很简单,

    2024年02月12日
    浏览(69)
  • H5向uni-app小程序传递参数

    1.script src=\\\"https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js\\\"/script 本地下载包引入也可以。  2.传递参数。 3.接收参数。 @message=\\\"handleMessage\\\"   获取当前数据是一个数组,每次获取让数组长度-1就是你需要的数据。

    2024年02月13日
    浏览(53)
  • uni-app uni-file-picker文件上传实现拍摄从相册选择获取图片上传文档服务器(H5上传-微信小程序上传)

    前言 最近在使用uni-app写H5移动端,有一个从手机拍摄从相册选择获取图片上传到文档服务器功能。 查阅uni-app发现关于上传图片,uni-file-picker文件上传,uni.chooseImage,uni.uploadFile H5上传时它和pc端原理差不多,都是file对象上传,PC端是通过new file对象,uni-app是直接提供了 微信

    2024年02月15日
    浏览(95)
  • uni-app - 头像图片裁剪组件(支持多种裁剪,手势控制旋转或缩放、内外部控制图片移动、提供上传后端接口方案、头像图片美化)全端完美兼容 H5 App 小程序,最好用的图片上传后裁剪插件教程源代码

    网上的教程代码非常乱且都有 BUG 存在,非常难移植到自己的项目中,而且很难。 实现了 完美兼容 H5 App 小程序,选取手机本地相册或拍照,图片上传裁切内置多种方案,样式随便改, 本文代码干净整洁注释详细,您一键复制源码后参照示例几分钟就能完事, 如下图 真机测

    2024年02月17日
    浏览(102)
  • uni-app启动小程序篇(字节,微信)

    uni-app启动小程序篇 uni-app在字节工具小程序启动 1.1 在Hbuild X点击运行, 进入运行设置 1.2 进入运行设置后,设置字节小程序的运行位置   1.3 以上配置完成后,点击运行到小程序   1.4 启动成功后 复制该地址   1.5 打开字节小程序,选小程序,点击新建   1.6 进入后点击导入项目,将刚

    2024年02月11日
    浏览(46)
  • uni-app 微信小程序端-AirKiss一键配网

    发现网上很多关于微信小程序配网的文章都是微信小程序原生开发,uni-app少之又少。这篇文章就介绍一下怎么在HBuilder X使用airkiss配网插件。 一.AirKiss介绍 ​ AirKiss是微信硬件平台为Wi-Fi设备提供的微信配网、局域网发现和局域网通讯的技术。开发者若要实现通过微信客户端

    2024年02月08日
    浏览(52)
  • uni-app的H5版本下载跨域问题

    前端能正常访问图片,但无法下载 因为路径不经过业务代码,所以需要在nginx配置跨域 代码:

    2024年02月17日
    浏览(46)
  • uni-app +java小程序端对接微信登陆

    要想实现微信登陆,首先必须注册开发者账号。 登录微信开放平台,添加移动应用并提交审核,审核通过后可获取应用ID(AppID),AppSecret等信息 在应用详情中 申请开通 微信登录功能,根据页面提示填写资料,提交审核 申请审核通过后即可打包使用微信授权登录功能 1.app端

    2024年02月11日
    浏览(46)
  • uni-app的优缺点;uniapp进行条件编译的两种方法;小程序端和H5的代表值

    目录 uni-app的优缺点 优点: 1.跨平台开发: 2.统一的开发语言: 3.高效的性能: 4.丰富的生态圈: 缺点: 1.平台差异性: 2.性能限制: 3.对新特性支持滞后: Uni-app条件编译 process.env.UNI_PLATFORM 变量: 使用 process.env.NODE_ENV 变量: Uni-app中的代表值 Uni-app 是一个跨平台的开发框架

    2024年02月08日
    浏览(138)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包