uniapp实现H5、APP、微信小程序三端文件下载

这篇具有很好参考价值的文章主要介绍了uniapp实现H5、APP、微信小程序三端文件下载。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

微信小程序的文件下载和预览

这里我使用了uniapp官方apiuni.downloadFileuni.openDocument

     // #ifdef MP-WEIXIN
        // 下载
		uni.downloadFile({
			//url: this.burl, //后端返回的文件地址
			url: 'xxxx.pdf',
			filePath: wx.env.USER_DATA_PATH + '/xxx.pdf',
			success: function(res) {
				if (res.statusCode === 200) {
					// 打开预览文件
					uni.openDocument({
						showMenu: true,// 右上角菜单,可以进行分享保存pdf
						filePath: res.filePath,
						success: function(res) {
							console.log(res, 'success')
						},
						fail: (err) => {
							uni.showToast({
								title: 'error',
								icon: 'none'
							})
						}
					})
				} else {
					uni.showToast({
						title: 'error',
						icon: 'none'
					})
				}
				uni.hideLoading()
				uni.showToast({
					title: 'success',
					icon: "success"
				})
			},
			fail: (err) => {
				uni.hideLoading()
				uni.showToast({
					title: 'error',
					icon: "error"
				})
			}
		})
		// #endif

APP

APP使用了uniapp官方apiuni.downloadFileuni.saveImageToPhotosAlbum(OBJECT)还有 uni.openDocument

// #ifdef APP-PLUS
      uni.downloadFile({
        url:
          "https://xxxx.pdf",
        success: res => {
          console.log(res)
          if (res.statusCode === 200) {
	        let _this=this
	        let eno=uni.getSystemInfoSync().platform //当前环境
	        let tempFile=res.tempFilePath
	        if(eno==='ios'){
	        	// 因为使用uni.saveFile保存文件时,安卓正常保存,并打开,ios一直报错
	        	//因为文件名用中文命名导致的,可以进行转码,不过需要注意的是只要在ios环境下转就行了,否则安卓无法下载
	        	tempFile=escape(tempFile)
	        }
            // 保存pdf文件至手机,一般安卓端存储路径为:手机存储/dcim/camera文件夹下
            // 直接调用的保存图片到系统相册的api
            uni.saveImageToPhotosAlbum({
              filePath: tempFile,
              success: function() {
                uni.showToast({
                  title: "文件已保存至/DCIM/CAMERA文件夹下",
                  icon: "none"
                })
                setTimeout(function() {
                  // 预览pdf文件
                  uni.openDocument({
                    filePath: res.tempFilePath,
                    showMenu: true,
                    success: function(file) {
                      console.log("file-success", file)
                    }
                  })
                }, 1500)
              },
              fail: function() {
                uni.showToast({
                  title: "保存失败,请稍后重试!",
                  icon: "none"
                })
              }
            })
          }
        }
      })
      // #endif

H5

H5的方法比较简单可以直接使用window.open方法下载。即:

window.open("xxxx.pdf")

如果你的浏览器支持预览,就会自动打开预览文件,然后自己手动下载文件,不支持则会直接下载。
但是在ios系统里,有时会出现window.open方法失效的问题。明明后端返回了地址,但是使用window.open却没有动静。这是因为safari浏览器有一些安全策略,禁止在回调函数中执行window.open方法,以防页面不断弹出窗口。
所以,为了解决这种问题,可以先打开一个空白页,然后在更新它的地址文章来源地址https://www.toymoban.com/news/detail-598185.html

// #ifdef H5
// 打开空白页
const winRef = window.open("about:blank","_blank");
// 通过接口到后台获取文件地址,然后更新空白页地址
api(parm).then(url=>{
winRef.location=url
})
// #endif

到了这里,关于uniapp实现H5、APP、微信小程序三端文件下载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • uniapp判断h5/微信小程序/app端

    区分标识 写法:以 #ifdef 或 #ifndef 加 %PLATFORM% 开头,以 #endif 结尾。 #ifdef:if defined 仅在某平台存在 #ifndef:if not defined 除了某平台均存在 %PLATFORM%:平台名称 此方法支持文件有 .vue   (模板里使用  !-- 注释 --) .js   (使用 // 注释) .css  (使用  /* 注释 */) pages.json 

    2024年02月11日
    浏览(61)
  • uniapp的打包:h5、微信小程序以及APP方式

    uniapp的打包:h5、微信小程序以及APP方式

    本人用的是HBuilder编译器,学习uniapp时b站某位大大推荐的,我刚开始接触代码时候也用过,那时候并不好用这个编译器,但是现在试了一下挺好用的。 这是h5页面的打包配置,新版本的HBuilder用的是web配置(也就是h5配置的意思) 由于上图是我个人项目练习,没有用到appID,所

    2024年02月09日
    浏览(50)
  • uniapp判断当前运行环境 app h5 微信小程序

    uniapp判断当前运行环境 app h5 微信小程序

    仅3.4.10+版本以上才支持,如果您的hbuilderX版本不是这个版本的需要先升级一下版本 hbuilderx下载 选择3.4.11及以上版本 uniPlatform   可取值如下:

    2024年02月11日
    浏览(44)
  • uniapp判断当前运行环境 app h5 微信小程序 百度小程序

    hbuilderX最新版本现在已经支持在代码中获取当前所处环境 仅3.4.10+版本以上才支持,如果您的hbuilderX版本不是这个版本的需要先升级一下版本 hbuilderx下载 选择3.4.11及以上版本 uniPlatform 可取值如下: 值 生效条件 app App web H5 mp-weixin 微信小程序 mp-alipay 支付宝小程序 mp-baidu 百度

    2024年02月11日
    浏览(52)
  • 实现微信小程序web-view内嵌H5中的下载功能(大文件切片下载)

    微信小程序的开发框架是uniapp,使用uniapp脚手架搭建,其中有页面是展示另一个小程序,在这个页面主体内容使用了标签将H5的页面内容展示,H5中有页面存放了下载的路径。点击下载按钮下载文件,或者预览文件让用户手动保存。 如果是pc端,下载用一个 a 标签就很容易,但

    2024年02月10日
    浏览(109)
  • 开发uniapp过程中对app、微信小程序与h5的webview调试

    开发uniapp过程中对app、微信小程序与h5的webview调试

        因为在开发中使用到了webview,因为出现一些问题,所以需要对webview进行跟踪调试,但因为app,h5与微信小程序不一样,所以需要单独说一下。     一、H5     这个比较简单,因为都是在chrome,用F12就可以  二、对微信小程序       因为普通的uniapp页面上都能通过F12可以

    2024年02月11日
    浏览(10)
  • uniapp 发送全文件 支持App端ios、android,微信小程序,H5

    由于uniapp提供的API在app端只能上传图片和视频,不能上传其他文件,说以只能借助插件了。  ios端用的这个插件 获取到文件对象 免费的 ios-uniapp 文件选取word,pdf,xls等文件 - DCloud 插件市场 uniapp iOS文件选取 iOS选取text,pdf,word,doc,xls,ppt https://ext.dcloud.net.cn/plugin?id=1311 这个是返回一

    2024年02月16日
    浏览(49)
  • uniapp - 【全端兼容】实现保存视频到手机相册功能,将 mp4 在线视频下载并存储到用户的手机中,uniapp App h5 小程序将视频文件下载保存(详细示例源码及注释一键复制,开箱即用!)

    uniapp - 【全端兼容】实现保存视频到手机相册功能,将 mp4 在线视频下载并存储到用户的手机中,uniapp App h5 小程序将视频文件下载保存(详细示例源码及注释一键复制,开箱即用!)

    在uniapp开发中,实现安卓苹果app、h5网页网站、小程序保存视频到相册功能,点击保存按钮后下载视频并将其存储到用户的手机相册中,完整示例源码及注释,新手小白开箱即用! 直接复制代码,稍微改下就能用到你的项目中去了(保证可用)。 可复制运行,或按需复制。

    2024年02月09日
    浏览(154)
  • uniapp获取app版本号、h5版本号、微信小程序版本号的方法

    App版本号 App的H5版本号 只能在手机模式下才可以打印 , h5 预览模式获取不到的 !!! 获取微信小程序版本号 感觉文章好的话记得点个心心和关注和收藏,有错的地方麻烦指正一下,如果需要转载,请标明出处,多谢!!!

    2024年02月04日
    浏览(51)
  • Uniapp 中,能够同时兼容H5、web、app、微信小程序的引入高德地图的语法格式

    在 Uniapp 中,可以通过使用 uni-app 统一的 API 来同时兼容 H5、web、App 和微信小程序,而引入高德地图则有以下两种语法格式供选择: 使用 Vue.js 的语法格式: 使用原生 JavaScript 的语法格式: 需要注意的是,这两种语法格式都需要在页面组件的 JavaScript 文件中引入相应的 API 文

    2024年02月05日
    浏览(15)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包