微信小程序自定义分享文件至好友
1、获取网络文件: 使用uni.downloadFileAPI下载网络文件。
2、保存文件到本地: 将下载的文件保存到本地。
3、使用微信小程序的分享功能: 调用微信小程序的分享API,将本地文件发送给好友。
1. 下载网络文件
async downloadFile(url) {
return new Promise((resolve, reject) => { uni.downloadFile({ url: url, success: (res) => { if (res.statusCode === 200) { resolve(res.tempFilePath); } else { reject(new Error('下载失败')); } }, fail: (err) => reject(err) }); }); },
讯享网
2. 保存文件到本地
讯享网saveFile(tempFilePath) {
return new Promise((resolve, reject) => {
wx.getFileSystemManager().saveFile({
tempFilePath: tempFilePath, success: (res) => {
resolve(res.savedFilePath); }, fail: (err) => reject(err) }); }); }
3. 调用微信小程序分享API
注:这里使用的的是uviewUI,以此为例。
首先安排一个按钮,点击触发 getFile 方法
<u-button type="primary" shape="circle" text="发送至聊天" @click="getFile"></u-button>
讯享网async getFile() {
// 获取到文件的下载链接 url 以http或https开头的下载链接 let url = "文件的下载链接" // 调用步骤1的文件下载方法 const tempFilePath = await this.downloadFile(url); // 调用步骤2的保存文件到本地的方法 this.savedFilePath = await this.saveFile(tempFilePath); console.log('文件保存成功,文件路径为:', this.savedFilePath); // 若你的下载地址是通过后端接口获取,要通过弹框的方式来中转一下,调起微信分享好友的API,因为该API不支持在回调中,会导致失败。点击确定调 shareFile 方法 uni.showModal({
title: '文件分享', content: '自定义弹框内容', success: (res) => {
if (res.confirm) {
console.log('用户点击确定'); this.shareFile(); } else if (res.cancel) {
console.log('用户点击取消'); } } }); },
shareFile() {
let arr = this.savedFilePath.split('.'); uni.shareFileMessage({
filePath: this.savedFilePath, fileName: '自定义分享的文件名' + `.${
arr[1]}`, success: () => {
console.log(err, '分享文件成功'); }, fail: (err) => {
console.log(err, '分享文件失败'); } }); },
结尾(完整代码)
讯享网<template> <u-button type="primary" shape="circle" text="发送至聊天" @click="getFile"></u-button> </template>
methods: {
async getFile() {
let url = "文件的下载链接" const tempFilePath = await this.downloadFile(url); this.savedFilePath = await this.saveFile(tempFilePath); console.log('文件保存成功,文件路径为:', this.savedFilePath); uni.showModal({
title: '文件分享', content: '自定义弹框内容', success: (res) => {
if (res.confirm) {
this.shareFile(); } else if (res.cancel) {
console.log('用户点击取消'); } } }); }, // 分享至好友 shareFile() {
let arr = this.savedFilePath.split('.'); uni.shareFileMessage({
filePath: this.savedFilePath, fileName: fileName: '自定义分享的文件名' + `.${
arr[1]}`, success: () => {
this.close(); }, fail: (err) => {
console.log(err, '分享文件失败'); } }); }, // 下载网络文件 async downloadFile(url) {
return new Promise((resolve, reject) => { uni.downloadFile({ url: url, success: (res) => { if (res.statusCode === 200) { resolve(res.tempFilePath); } else { console.log(res, '-------'); reject(new Error('下载失败')); } }, fail: (err) => reject(err) }); }); }, // 保存文件到本地 saveFile(tempFilePath) {
return new Promise((resolve, reject) => {
wx.getFileSystemManager().saveFile({
tempFilePath: tempFilePath, success: (res) => {
resolve(res.savedFilePath); }, fail: (err) => reject(err) }); }); } }
浅浅记录一下,当然也可以进一步封装一下,更具清晰性。如有不足,欢迎指出…😊😊😊

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/73318.html