- 使用wx.request发送multipart/form-data请求的方法
社区里有不少关于wx.request发送multipart/form-data请求的问题,我看了几个,基本都说wx.request不支持,得用wx.uploadFile来“曲线救国”。我花了些时间研究了一下,找到了如下方法,分享出来,希望能帮助到有需要的人。 首先,服务端,我用的是async-busboy来解析multipart/form-data请求,测试代码直接使用它提供的就可以:https://github.com/m4nuC/async-busboy/blob/master/examples/index.js 小程序端: 如果wx.request中仅指定'content-type'为'multipart/form-data',服务端会报"no multipart boundary was found"的错误,就像这个帖子里描述的:https://developers.weixin.qq.com/community/develop/doc/000e64476f8d80fd7b9765d5655c00 尽管指定了content-type为'mutipart/form-data',但是wx.request并不会为我们自动添加boundary,既然如此,我们自己加不就可以了吗?经过测试,确认了这个方法可行,前端示例代码如下: [代码]wx.request({[代码][代码] [代码][代码]url: [代码][代码]'http://localhost:8080/test/multipart-form'[代码][代码],[代码][代码] [代码][代码]method: [代码][代码]'POST'[代码][代码],[代码][代码] [代码][代码]header: {[代码][代码] [代码][代码]'content-type'[代码][代码]: [代码][代码]'multipart/form-data; boundary=XXX'[代码][代码] [代码][代码]},[代码][代码] [代码][代码]data: [代码][代码]'\r\n--XXX'[代码] [代码]+[代码][代码] [代码][代码]'\r\nContent-Disposition: form-data; name="field1"'[代码] [代码]+[代码][代码] [代码][代码]'\r\n'[代码] [代码]+[代码][代码] [代码][代码]'\r\nvalue1'[代码] [代码]+[代码][代码] [代码][代码]'\r\n--XXX'[代码] [代码]+[代码][代码] [代码][代码]'\r\nContent-Disposition: form-data; name="field2"'[代码] [代码]+[代码][代码] [代码][代码]'\r\n'[代码] [代码]+[代码][代码] [代码][代码]'\r\nvalue2'[代码] [代码]+[代码][代码] [代码][代码]'\r\n--XXX--'[代码][代码] [代码][代码]})[代码]这里,我向服务端传递了两个参数:field1=value1, field2=value2,服务端得到的结果如下: [图片] 如果对multipart/form-data的请求体格式不了解,可以参考这篇文章:https://ec.haxx.se/http-multipart.html wx.request中的data结构看起来有些复杂,有需要的可以封装一下,封装好的API欢迎跟帖分享出来。
2019-08-10 - 隐私保护指引设置一直审核不通过,连续提交6次了还是不通过,求解?
根据法律规定,开发者仅处理实现小程序功能所必要的信息。 为了展示你的个人信息,开发者将在获取你的明示同意后,收集你的微信昵称、头像。为了保存图片,开发者将在获取你的明示同意后,使用你的相册(仅写入)权限。为了方便联系你,提供更好的售前售后服务,开发者将在获取你的明示同意后,收集你的手机号。
05-12 - chooseMedia接口选择图片,出现很多报错:chooseMedia:fail
监控报错日志,发现最近用户端选择图片时出现很多报错 报错返回的”errMsg“ 只有 ”chooseMedia:fail“ ,没有其他任何信息,无法判断是什么地方出现错误。 根据已有日志, 目前主要出现的基础库版本:3.7.1(最多)、3.6.6 主要出现的机型:荣耀、华为、vivo、oppo等,都是安卓机型,iphone暂时没发现 我自己的华为手机没问题,无法复现,都是统计用户端的报错。
2024-12-16 - 小程序帐号登录规范要求与修改指引
为更好地保护用户隐私信息,优化用户体验,平台对小程序内的帐号登录功能进行规范。“帐号登录功能”是指开发者在小程序内提供帐号登录功能,包括但不限于进行的手机号登录,getuserinfo形式登录、邮箱登录等形式。一、登录规范规则,你需要了解:[图片] 一、「体验范围开放」与「体验范围特定」区分与对应整改建议:1、“体验范围开放”定义:①直接打开即可体验 ②有账号限制,但有注册流程是对外开放 整改建议: ①授权个人信息功能后置,给与用户充分了解、体验功能服务后,再由用户主动点击进一步功能触发登录授权 ②授权同时,亦同时支持给与用户取消登录的权利 案例解析: ①范围开放-登录规范违规案例解析 违规点:服务范围开放,首页打开即要求授权登录,用户未体验功能服务强制要求授权登录,登录规范不合规。 [图片] ②范围开放-登录环节无取消/拒绝登录按钮案例解析 违规点:体验范围开放,用户体验功能服务后自主触发登录,提供取消/拒绝登录按钮,但点击取消/拒绝登录按钮无响应,仍强制要求登录,无法取消/拒绝登录。 [图片] 2、体验范围特定 定义: 体验范围提供给特定人员使用、对外无开放注册流程,例如为学校系统、员工系统、社保卡信息系统等提供特定服务的小程序 整改建议: ①首页有明显的使用范围(特定范围)说明 ②首页即要求授权来拉取身份鉴定类,需要为用户提供暂不登录/取消登录选项按钮 案例解析: ①特定范围-登录违规案例解析 违规点:打开首页即要求授权登录,无任何说明,不符合登录规范要求 [图片] 这是一份动态更新的文档,辅助开发者了解登录规范要求,避免开发者因登录规范问题审核失败导致无法按期发布上线,开发者如有其他疑问,可以通过目前开放的咨询渠道反馈: 1、微信开放社区-交流专区-小程序发帖咨询-提出问题-运营相关问题 2、驳回站内信通知-客服咨询入口(MP代码审核客服入口正处于灰度开放中,若未获得灰度测试入口,开发者可前往社区发帖咨询) 我们会根据新出现的问题、相关法律法规更新或产品运营的需要及时对其内容进行修改并更新,制定新的规则,保证微信用户的体验。建议开发者反复查看以便获得最新信息,定期了解更新情况。
2020-12-24 - fileSystemManager.saveFile保存 wx.env.USER_DATA_PAT?
fileSystemManager.saveFile保存 wx.env.USER_DATA_PATH到路径到底在手机内存哪个文件夹中可以找到啊? fileSystemManager.saveFile的filePath路径可不可以直接写成手机的内存文件路径地址呢? wx.env.USER_DATA_PATH变量到底和手机内存俩者可不可以互通看得见?
2023-08-16 - wxfile://usr/ 这个路径在手机的哪里啊?找不到?
需求是这样,会下载各种格式的文件,要在手机里面能找到这个文件,客户得到这个文件,会自行使用。 具体代码如下: var filemanager=wx.getFileSystemManager();//获取全局唯一的 文件管理器 var fujian = 'http://..../hezhiyoude/webimg/download.txt'; //ip地址我省略了 var filename=fujian.substring(fujian.lastIndexOf('/') + 1); wx.downloadFile({ url: fujian, success: function (res) { filemanager.saveFile({ tempFilePath:res.tempFilePath, filePath:wx.env.USER_DATA_PATH + "/" + filename, success:function(res){ app.common.successtip('下载成功'); }, fail:function(res){ console.log(res) } }) }, fail: function (err) { console.log(err) app.common.errortip('下载失败'); } }) 下载成功的时候,提示了下载到了 wxfile://usr/download.txt 这个位置,但是我的手机里面没有usr这个文件夹,也找不到download.txt这个文件。 哪位大神知道是怎么回事啊?我先谢谢了!!!
2020-10-27 - 微信小程序对接企业微信客服
考虑到用户会在企业的小程序里联系客服,为此支持在小程序里接入微信客服。微信小程序打开微信客服的功能已向非个人的全体小程序开放,小程序开发者在小程序管理后台处绑定同主体的微信客服(企业ID)后即可调用小程序相关接口,接入微信客服。 接入方式:https://developer.work.weixin.qq.com/document/path/94739、https://kf.weixin.qq.com/api/doc/path/94772 在微信客服管理后台获取对外的企业ID和客服链接。在小程序管理后台的【功能】【客服】【微信客服】处,填写同一主体的微信客服对应的企业ID,完成小程序和微信客服的绑定。调用「小程序打开微信客服」接口,完成接入。 注:仅可正常接入已在小程序管理后台绑定的企业ID下的微信客服 小程序管理后台-关联企业微信客服注意:企业ID必须跟该小程序的企业主体一致; 在小程序中的接入流程:https://work.weixin.qq.com/nl/act/p/a733314375294bdd 详情如下: [图片] 登录企业微信管理后台-开启微信客服功能参考:https://baijiahao.baidu.com/s?id=1735577920604728565&wfr=spider&for=pc、 https://blog.csdn.net/weixin_42065713/article/details/126137884?from_wecom=1 (1)登录【企业微信管理后台】选择【应用管理】【微信客服】,开启【微信客服】旁边的按钮; 注意:若需要后台对接客服信息的话需要开启“通过API管理微信客服”的,若不需要则不开启。 [图片] (2)然后在【客服账号】一栏点击【创建账号】来指定接待人员;创建客服账号时,企业管理员可以选择展示的视频号,设置接待人员、接待规则、接待上限、接待时间、智能回复、超时结束聊天等内容。 [图片] [图片] (3)选择【接入场景】 在这里我们选择【在微信内其他场景接入】,进入页面后点击【去接入】。企业管理员可以选择需要配置的客服账号,复制客服链接后可以配置到以下场景:在网页接入、在公众号菜单接入、在小程序接入、在搜一搜品牌官方区接入、点击微信支付凭证接入。接入后,客户点击客服入口即可发起咨询。 [图片] [图片] (4)可以在【服务工具】找到相应的配置设置客服的自动回复 [图片] 在小程序中添加打开微信客服的点击事件,调用「wx.openCustomerServiceChat」接口完成接入。 export default { methods: { // 跳转微信客服 jumpToWeChatCustomerService() { openWeChatCustomerService("https://work.weixin.qq.com/xxxxx", "wwed1ca4d3597eXXXX"); }, // 打开微信客服 openWeChatCustomerService ( weiXinCustomerServiceUrl = "", corpId = "", showMessageCard = false, sendMessageTitle = "", sendMessagePath = "", sendMessageImg = "" ) { if (!weiXinCustomerServiceUrl || !corpId) return Toast("请配置好客服链接或者企业ID"); // eslint-disable-next-line no-undef wx.openCustomerServiceChat({ // 客服信息 extInfo: { url: weiXinCustomerServiceUrl, // 客服链接 https://work.weixin.qq.com/xxxxxxxx }, corpId, // 企业ID wwed1ca4d3597eXXXX showMessageCard, // 是否发送小程序气泡消息 sendMessageTitle, // 气泡消息标题 sendMessagePath, // 气泡消息小程序路径(一定要在小程序路径后面加上“.html”,如:pages/index/index.html) sendMessageImg, // 气泡消息图片 success(res) { console.log("success", JSON.stringify(res)); }, fail(err) { console.log("fail", JSON.stringify(err)); // eslint-disable-next-line no-undef return wx.showToast({ title: err.errMsg, icon: "none" }); }, }); }, }, } 常见错误:(1)"fail" "{"errCode":1,"errMsg":"openCustomerServiceChat:fail invalid param: url"}" [图片] 原因是:属性extInfo拼错了。 解决方法:将extInfo属性名写对即可。 (2)sendMessagePath属性设置的小程序绝对路径后,在微信客服消息的气泡消息点击打开会提示“页面不存在”。 在小程序内正常访问路径如:“pages/index/index”是可以访问成功的,但如果在sendMessagePath属性设置该路径的话,在微信客服消息的气泡消息点击打开会提示“页面不存在”。 [图片] [图片] [图片] 解决方法:在小程序文件路径后面加上“.html”即可,如“pages/index/index.html”或者“/pages/index/index.html”都可 [图片]
2023-09-05