Uniapp丨微信小程序自定义分享文件至好友

Uniapp丨微信小程序自定义分享文件至好友微信小程序自定义分享文件至好友 1 获取网络文件 使用 uni downloadFile 下载网络文件 2 保存文件到本地 将下载的文件保存到本地 3 使用微信小程序的分享功能 调用微信小程序的分享 API 将本地文件发送给好友 1 下载网络文件 async downloadFile url return new

大家好,我是讯享网,很高兴认识大家。

微信小程序自定义分享文件至好友

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) }); }); } } 

浅浅记录一下,当然也可以进一步封装一下,更具清晰性。如有不足,欢迎指出…😊😊😊

小讯
上一篇 2025-04-02 21:56
下一篇 2025-02-05 14:29

相关推荐

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