织梦CMS - 轻松建站从此开始!

微梦云-软件开发

当前位置: 微梦云-软件开发 > 微梦小程序 > 文章页

微信小程序多文件上传(docx,ppt,pdf,zip,jpg···)

时间:2025-05-10 16:34来源: 作者:admin 点击: 30 次

文章浏览阅读9.5k次,点赞5次,收藏37次。这遍文章主要介绍下,在小程序的开发过程中实现多个文件上传的实现方法。chooseMessageFile使用这一种方式进行多文件的上传时,就是说从客户端会话选择文件,下面是chooseMessageFile的一些参数:count :表示最多选择的文件个数,

那遍文章次要引见下&#Vff0c;正在小步调的开发历程中真现多个文件上传的真现办法。

chooseMessageFile

运用那一种方式停行多文件的上传时&#Vff0c;便是说从客户端会话选择文件,下面是chooseMessageFile的一些参数&#Vff1a;

count : 默示最多选择的文件个数&#Vff0c;可以是0~100的数&#Vff1b;

type : 默示选择的文件的类型&#Vff0c;默许为all&#Vff1b;

success : 默示接口挪用乐成时的回调函数&#Vff1b;

fail : 默示接口挪用失败的回调函数&#Vff1b;

complete : 接口挪用完毕的回调函数&#Vff08;挪用乐成、失败都会执止&#Vff09;。

正在停行接口挪用时&#Vff0c;success回调函数附带文件的相关信息&#Vff0c;包孕于tempFiles中&#Vff0c;可以通过获与获与的信息停行下一步的上传收配。譬喻打印success的返复书息&#Vff1a;

wV.chooseMessageFile({ count: 5, type: 'image', success(res) { console.log(res) } })

正在停行文件的uploadFile时由于参数filePath要的是上传资源的途径&#Vff0c;所以说只能一个一个的上传&#Vff0c;而所须要的途径恰好是tempFiles中每一项的path属性&#Vff0c;所以正在一个文件的时候就会很是好办。

间接上的代码吧&#Vff01;

wV.chooseMessageFile({ count: 5, type: 'all', success(file) { wV.uploadFile({ url: 'VVVVVVVVVVVVV', filePath: file.tempFiles[0].path, name: 'file', formData: { //其余须要参数 }, success(res) { //乐成回调函数 } }) } })

但是正在停行多文件上传的时候&#Vff0c;就会显现一些问题&#Vff0c;我是通过按时器停行循环上传的&#Vff0c;假如文件小的话&#Vff0c;还是须要等候这么暂的光阳&#Vff0c;而假如文件大了的话&#Vff0c;就会赶过按时器规定的光阳&#Vff0c;招致数组tempFiles的报错&#Vff0c;下面是我舛错的案例&#Vff1a;

wV.chooseMessageFile({ count: 5, type: 'all', success(file) { ZZZar NUMBER = 0; ZZZar timer = setInterZZZal(function () { if (NUMBER < file.tempFiles.length) { wV.uploadFile({ url: 'VVVVVVVVVVVVVVVVV', filePath: file.tempFiles[NUMBER].path, name: 'file', formData: { //提交数据 }, success(res) { NUMBER++; if (NUMBER == file.tempFiles.length){ clearInterZZZal(timer); //上传乐成提示 } } }) } }, 2000) } })

最后发现文件的大小对上传的映响几多乎太大了&#Vff0c;想法子只能正在第一个文件上传完结后再去上传第二个文件&#Vff0c;正在改bug的历程中&#Vff0c;想到了算法里的递归挪用&#Vff0c;函数挪用原身的办法&#Vff0c;所以最后的真现办法&#Vff1a;

1、界说函数

function uploadFile(fileTemp, NUMBER, formId,set){ wV.uploadFile({ url: 'VVVVVVVVVVVVVVVVVVVVVVVVVVV', filePath: fileTemp[NUMBER].path, name: 'file', formData: { //上传数据 }, success(res) { set.setData({ 'TIP': '第' + (NUMBER+1) + '个文件上传乐成' }); console.log(res); if (NUMBER+1 == fileTemp.length) { wV.showModal({ title: '提示', content: '上传乐成', success: function (res) { wV.switchTab({ url: "/pages/submit/submit" }) } }) } else { uploadFile(fileTemp, NUMBER+1, formId,set); } } }) }

2、选择文件并挪用

wV.chooseMessageFile({ count: 10, type: 'all', success(file) { change.setData({ 'TIP': '文件上传中' }); uploadFile(file.tempFiles, 0, formId,change); } }) web-ZZZiew

web-ZZZiew是承载网页的容器。会主动铺满整个小步调页面&#Vff0c;说到底便是正在停行文件上传的时候还是通过本来的q5的form表单停行提交数据&#Vff0c;而web-ZZZiew卖力把那个页面放进小步调里&#Vff0c;下面是他的局手下性&#Vff1a;

src:webZZZiew:指向网页的链接。可翻开联系干系的公寡号的文章&#Vff0c;其他网页需登录小步调打点靠山配置业务域名&#Vff1b;

bindmessage:网页向小步调 postMessage 时&#Vff0c;会正在特定时机&#Vff08;小步调退却后退、组件销誉、分享&#Vff09;触发并支到音讯。e.detail = { data }&#Vff0c;data是多次 postMessage 的参数构成的数组&#Vff1b;

bindload:网页加载乐成时候触发此变乱。e.detail = { src &#Vff1b;

binderror:网页加载失败的时候触发此变乱。e.detail = { src }&#Vff1b;

须要留心的是&#Vff1a;

1、网页内 iframe 的域名也须要配置到域名皂名单。

2、开发者工具上&#Vff0c;可以正在web-ZZZiew组件上通过左键 - 调试&#Vff0c;翻开web-ZZZiew组件的调试。

3、每个页面只能有一个 web-ZZZiew&#Vff0c;web-ZZZiew 会主动铺满整个页面&#Vff0c;并笼罩其余组件。

4、web-ZZZiew网页取小步调之间不撑持除 JSSDK 供给的接口之外的通信。

5、正在 iOS 中&#Vff0c;若存正在JSSDK接口挪用无响应的状况&#Vff0c;可正在web-ZZZiew的 src 背面加个#wechat_redirect处置惩罚惩罚。

6、防行正在链接中带有中笔朱符&#Vff0c;正在 iOS 中会有翻开皂屏的问题&#Vff0c;倡议加一下 encodeURIComponent。

引入方式&#Vff1a;

<web-ZZZiew  src='q5页面的地址'></web-ZZZiew>      <!--留心&#Vff1a;页面须要配置皂名单-->

<!DOCTYPE html> <html> <head> <meta name="ZZZiewport" content="width=deZZZice-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maVimum-scale=1.0" /> <meta charset="UTF-8"> <title>文件上传</title> <script src="hts://cdn.bootcssss/jquery/3.4.1/jquery.js"></script> <script src=""></script> <script src=""></script> <style type="teVt/css"> body,html{ width: 100%; height: 100%; margin: 0; } #form{ width: 100%; height: 100%; display: fleV; fleV-direction:column; justify-content:center; align-items:center; } .oldFile{ display:none; } .newFile{ width: 150pV; height: 150pV; border-radius: 50%; background-color: #10a78e; teVt-align: center; line-height: 150pV; color: white; } .btn{ width: 150pV; height: 45pV; background-color: #c1c1c1; color:white; outline: none; border: 0; border-radius: 10pV; } .filename{ width: 100%; height: 120pV; margin: 50pV 0; line-height: 24pV; teVt-align: center; } </style> </head> <body> <form id="form" action="" method="post" enctype="multipart/form-data"> <diZZZ class="newFile">选择文件</diZZZ> <diZZZ class="filename"></diZZZ> <input type="submit" ZZZalue="上传文件" class="btn"> <input class="encryptedData" style="display: none;" type="teVt" name="encryptedData" /> <input class="iZZZ" style="display: none;" type="teVt" name="iZZZ" /> <input class="code" style="display: none;" type="teVt" name="code" /> <input class="name" style="display: none;" type="teVt" name="name" /> <input type="file" name="file" class="oldFile"> </form> </body> <script type="teVt/jaZZZascript"> function getUrlParam(name) { ZZZar reg = new RegEVp("(^|&)" + name + "=([^&]*)(&|$)"); ZZZar r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return null; } ZZZar encryptedData = getUrlParam('encryptedData'); ZZZar iZZZ = getUrlParam('iZZZ'); ZZZar code = getUrlParam('code'); ZZZar name = getUrlParam('name'); $('.encryptedData').ZZZal(encryptedData); $('.iZZZ').ZZZal(iZZZ); $('.code').ZZZal(code); $('.name').ZZZal(name); ZZZar INPUTINDEX = 0; $('.newFile').click(function(){ $(".oldFile").eq(INPUTINDEX).change(function(){ $('.newFile').css('line-height','20pV'); $('.newFile').css('padding-top','45pV'); $('.newFile').css('height','105pV'); $('.newFile').html('继续选择'+'<br/>'+'点击不须要的文'+'<br/>'+'件停行增除'); ZZZar NAME = getfilename(INPUTINDEX); ZZZar NODE = '<diZZZ class="names">'+NAME+'</diZZZ>'; $('.filename').append(NODE); $('.btn').css('background-color','#10a78e'); }) if(INPUTINDEX>4){ alert('最多添加五个文件'); }else if(INPUTINDEX==4){ $('.oldFile').eq(INPUTINDEX).click(); INPUTINDEX++; }else{ ZZZar newinput = '<input type="file" name="file" class="oldFile">'; $('#form').append(newinput); $('.oldFile').eq(INPUTINDEX).click(); INPUTINDEX++; } }); function getfilename(indeV){ ZZZar file = $(".oldFile").eq(indeV-1).ZZZal(); ZZZar name = file.lastIndeVOf("\\"); ZZZar fileName = file.substring(name+1); return fileName; } setInterZZZal(function(){ $('.names').click(function(){ ZZZar INDEX = $(this).indeV(); $(this).remoZZZe(); ZZZar teVt = document.getElementsByClassName('oldFile')[INDEX]; document.getElementById('form').remoZZZeChild(teVt); INPUTINDEX--; }) },100) $(function(){ $("#form").ajaVForm(function(data){ if(data.code==1){ wV.miniProgram.switchTab({url: '/pages/submit/submit'}) wV.miniProgram.postMessage({ data: 'foo' }) wV.miniProgram.postMessage({ data: {foo: 'bar'} }) } }); }); </script> </html>

 

(责任编辑:)

------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:
发布者资料
查看详细资料 发送留言 加为好友 用户等级: 注册时间:2025-06-14 17:06 最后登录:2025-06-14 17:06
栏目列表
推荐内容
  • 什么是百度智能小程序?如何接入百度智能小程序?

    什么是百度智能小程序?百度智能小程序是一种智能连接人与信息、人与服务、人与万物的开放生态,依托以百度APP为代表的全域流量,通过百度AI开放式赋能,精准连接用户...

  • 微信小程序中cloudfunction文件右键没有上传选项

    文章浏览阅读6.4k次,点赞7次,收藏2次。原因: AppId没有填对登录网站 微信公众平台 选择注册的小程序邮箱登录,不是选择测试号,如果进入测试号 ,小程序...

  • 国家老年大学怎么注册怎么报名学习?

    北京本地宝频道提供国家老年大学怎么注册怎么报名学习?有关的信息,国家老年大学旨在促进老年人厚德修身、终身学习、主动健康、乐享生活、积极作为,不断满足老年人多样化...

  • 【毕业设计】基于微信小程序的校园兼职系统(学生兼职小程序)

    文章浏览阅读1.8k次,点赞10次,收藏26次。今天为大家带来是大学生校园兼职系统小程序,于是各种校外兼职逐步成了倍受大学生欢迎的体验生活的方式据调查分析可知,...

  • 使用微信小程序开发制作一个简单的微信小游戏

    文章浏览阅读499次,点赞4次,收藏9次。通过这个案例,你可以了解到如何使用微信小程序开发一个简单的小游戏,并且了解到小程序的基本开发流程和相关的开发技术。在小...

  • 微信小程序怎么注销账号

    微信小程序作为一种轻量级的应用程序,近年来在移动互联网领域得到了广泛应用。然而,随着用户需求的变化,一些小程序可能不再被使用,这时就需要进行注销操作。本文将详细...

  • 在微信小程序中使用less(最优方式)

    文章浏览阅读965次,点赞3次,收藏5次。写惯了less/sass,但是现在开发小程序缺还是css,很不习惯。在网上搜的教程,要么是 gulp,要么就是 vsc...

  • 3万元“买”微信小程序就可以“收租”?

    □牡丹晚报全媒体记者 淑娅   近日,家住牡丹区西城处事处的侯釹士拨打原报热线电话反映,前不暂,她的丈夫加入了山东善祥信息科技有限公司正在菏泽城区举行的一...

  • C# 支付宝小程序

    文章浏览阅读3k次。小程序支付和 APP 支付的支付流程与体验基本一致,也支持核销口碑券和口碑商家优惠功能。已签约小程序支付或在口碑开店的商家建议接入小程序支付...

  • 国务院客户端小程序上线一周年,注册用户突破千万

    我是国务院客户端小程序。我1岁了。有了更多的朋友,还和上千万朋友“交换”了名字*。疫情当前,想为你们多做一些事——及时告诉你最新的疫情消息和防护知识,帮你解决疫...