无解,必须由用户在页面上主动触发。
wx.getUserInfo不通过button如何实现wx.getUserInfo接口更新后不能直接调用了,必须要通过button来实现,但是有时候我想在页面加载的时候直接弹出授权,不需要用户去点击按钮。如何实现呢?
2018-08-16楼主可以参考下,采用的递归上传,这样能保证顺序性,页面上用的是[代码][代码][代码]progressArray[代码]循环展示图片,支持上传进度条: [代码]const defaultProgress = {[代码][代码] [代码][代码]uploading: [代码][代码]false[代码][代码],[代码][代码] [代码][代码]progressShow: [代码][代码]false[代码][代码],[代码][代码] [代码][代码]progress: 0,[代码][代码] [代码][代码]url: [代码][代码]''[代码][代码],[代码][代码] [代码][代码]task: {}[代码][代码]};[代码][代码]const defaultApply = {[代码][代码] [代码][代码]id: [代码][代码]null[代码][代码],[代码][代码] [代码][代码]sex: 2,[代码][代码] [代码][代码]post: 1,[代码][代码] [代码][代码]onPost: [代码][代码]true[代码][代码],[代码][代码] [代码][代码]inspectedRealName: [代码][代码]''[代码][代码],[代码][代码] [代码][代码]reason: [代码][代码]''[代码][代码],[代码][代码] [代码][代码]imageId: [代码][代码]''[代码][代码],[代码][代码] [代码][代码]imageIdArray: [],[代码][代码] [代码][代码]jobImage: [代码][代码]''[代码][代码],[代码][代码] [代码][代码]jobImageArray: [],[代码][代码] [代码][代码]progressArray: [][代码][代码]};[代码] [代码] [代码][代码]//上传图片[代码][代码] [代码][代码]chooseImageClick: [代码][代码]function[代码] [代码](e) {[代码][代码] [代码][代码]console.info([代码][代码]'[chooseImageClick]----->'[代码][代码], e);[代码][代码] [代码][代码]let that = [代码][代码]this[代码][代码];[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]stageBtnDisabled: [代码][代码]true[代码][代码],[代码][代码] [代码][代码]submitBtnDisabled: [代码][代码]true[代码][代码] [代码][代码]});[代码][代码] [代码][代码]wx.getLocation({[代码][代码] [代码][代码]success: [代码][代码]function[代码] [代码](location_res) {[代码][代码] [代码][代码]console.info([代码][代码]'[wx.getLocation success]----->'[代码][代码], location_res);[代码][代码] [代码][代码]wx.chooseImage({[代码][代码] [代码][代码]sizeType: [[代码][代码]'compressed'[代码][代码]],[代码][代码] [代码][代码]sourceType: [[代码][代码]'camera'[代码][代码]],[代码][代码] [代码][代码]success: [代码][代码]function[代码] [代码](image_res) {[代码][代码] [代码][代码]console.info([代码][代码]'[wx.chooseImage success]----->'[代码][代码], image_res);[代码][代码] [代码][代码]var[代码] [代码]filePaths = image_res.tempFilePaths;[代码][代码] [代码][代码]var[代码] [代码]formData = {[代码][代码] [代码][代码]folder: [代码][代码]'patrol'[代码][代码],[代码][代码] [代码][代码]longitude: location_res.longitude,[代码][代码] [代码][代码]latitude: location_res.latitude[代码][代码] [代码][代码]};[代码][代码] [代码][代码]that.judgePrevFile(filePaths, 0, formData);[代码][代码] [代码][代码]//that.recursionUploadFile(filePaths, 0, formData);[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]stageBtnDisabled: [代码][代码]false[代码][代码],[代码][代码] [代码][代码]submitBtnDisabled: [代码][代码]false[代码][代码] [代码][代码]});[代码][代码] [代码][代码]},[代码][代码] [代码][代码]fail: [代码][代码]function[代码] [代码](image_res) {[代码][代码] [代码][代码]console.info([代码][代码]'[wx.chooseImage fail]----->'[代码][代码], image_res);[代码][代码] [代码][代码]if[代码] [代码](image_res.errMsg == [代码][代码]'chooseImage:fail auth deny'[代码][代码] [代码][代码]|| image_res.errMsg == [代码][代码]'chooseImage:fail:auth denied'[代码][代码]) {[代码][代码] [代码][代码]app.checkAuthorization({});[代码][代码] [代码][代码]}[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]stageBtnDisabled: [代码][代码]false[代码][代码],[代码][代码] [代码][代码]submitBtnDisabled: [代码][代码]false[代码][代码] [代码][代码]});[代码][代码] [代码][代码]}[代码][代码] [代码][代码]});[代码][代码] [代码][代码]},[代码][代码] [代码][代码]fail: [代码][代码]function[代码] [代码](location_res) {[代码][代码] [代码][代码]console.info([代码][代码]'[wx.getLocation fail]----->'[代码][代码], location_res);[代码][代码] [代码][代码]if[代码] [代码](location_res.errMsg == [代码][代码]'getLocation:fail auth deny'[代码][代码] [代码][代码]|| location_res.errMsg == [代码][代码]'getLocation:fail:auth denied'[代码][代码]) {[代码][代码] [代码][代码]app.checkAuthorization({});[代码][代码] [代码][代码]}[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]stageBtnDisabled: [代码][代码]false[代码][代码],[代码][代码] [代码][代码]submitBtnDisabled: [代码][代码]false[代码][代码] [代码][代码]});[代码][代码] [代码][代码]}[代码][代码] [代码][代码]});[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]//判断上一个文件是否完成上传[代码][代码] [代码][代码]judgePrevFile: [代码][代码]function[代码] [代码](filePaths, current, formData) {[代码][代码] [代码][代码]console.info([代码][代码]'[judgePrevFile]----->'[代码][代码], current);[代码][代码] [代码][代码]var[代码] [代码]that = [代码][代码]this[代码][代码];[代码][代码] [代码][代码]var[代码] [代码]progressArray = that.data.empJobApply.progressArray;[代码][代码] [代码][代码]if[代码] [代码](progressArray.length > 0 && progressArray[progressArray.length - 1].url === [代码][代码]''[代码][代码]) {[代码][代码] [代码][代码]setTimeout([代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]that.judgePrevFile(filePaths, current, formData);[代码][代码] [代码][代码]}, 500);[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]that.recursionUploadFile(filePaths, current, formData);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]//递归上传文件[代码][代码] [代码][代码]recursionUploadFile: [代码][代码]function[代码] [代码](filePaths, current, formData) {[代码][代码] [代码][代码]console.info([代码][代码]'[recursionUploadFile]----->'[代码][代码], current);[代码][代码] [代码][代码]console.info([代码][代码]'[recursionUploadFile]----->'[代码][代码], [代码][代码]'开始上传第'[代码] [代码]+ (current + 1) + [代码][代码]'个文件'[代码][代码]);[代码][代码] [代码][代码]var[代码] [代码]that = [代码][代码]this[代码][代码];[代码][代码] [代码][代码]var[代码] [代码]apply = that.data.empJobApply;[代码][代码] [代码][代码]apply.progressArray.push(Object.assign({}, defaultProgress, {uploading: [代码][代码]true[代码][代码], progressShow: [代码][代码]true[代码][代码]}));[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]empJobApply: apply[代码][代码] [代码][代码]});[代码] [代码] [代码][代码]var[代码] [代码]uploadTask = tt.upload({[代码][代码] [代码][代码]url: [代码][代码]'/image/upload/single'[代码][代码],[代码][代码] [代码][代码]filePath: filePaths[current],[代码][代码] [代码][代码]name: [代码][代码]'image_file'[代码][代码],[代码][代码] [代码][代码]formData: formData,[代码][代码] [代码][代码]success: upload_res => {[代码][代码] [代码][代码]console.info([代码][代码]'[recursionUploadFile success]----->'[代码][代码], upload_res);[代码][代码] [代码][代码]if[代码] [代码](upload_res.statusCode && upload_res.statusCode == 413) {[代码][代码] [代码][代码]wx.showToast({title: [代码][代码]'文件太大啦!'[代码][代码], image: [代码][代码]'../../utils/imgs/error-150.png'[代码][代码], duration: 3000});[代码][代码] [代码][代码]apply.progressArray.splice(apply.progressArray.length - 1, 1);[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]empJobApply: apply[代码][代码] [代码][代码]});[代码][代码] [代码][代码]return[代码][代码];[代码][代码] [代码][代码]}[代码][代码] [代码][代码]var[代码] [代码]data = JSON.parse(upload_res.data);[代码][代码] [代码][代码]if[代码] [代码](data.status && data.status == 500) {[代码][代码] [代码][代码]wx.showToast({title: [代码][代码]'上传出错啦!'[代码][代码], image: [代码][代码]'../../utils/imgs/error-150.png'[代码][代码], duration: 3000});[代码][代码] [代码][代码]apply.progressArray.splice(apply.progressArray.length - 1, 1);[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]empJobApply: apply[代码][代码] [代码][代码]});[代码][代码] [代码][代码]return[代码][代码];[代码][代码] [代码][代码]}[代码][代码] [代码][代码]if[代码] [代码](data.suc) {[代码][代码] [代码][代码]apply.imageIdArray.push(data.ext.imageId);[代码][代码] [代码][代码]apply.jobImageArray.push(data.info);[代码][代码] [代码][代码]apply.imageId = apply.imageIdArray.join([代码][代码]','[代码][代码]);[代码][代码] [代码][代码]apply.jobImage = apply.jobImageArray.join([代码][代码]','[代码][代码]);[代码][代码] [代码][代码]apply.progressArray[apply.progressArray.length - 1].url = data.info;[代码][代码] [代码][代码]apply.progressArray[apply.progressArray.length - 1].uploading = [代码][代码]false[代码][代码];[代码][代码] [代码][代码]apply.progressArray[apply.progressArray.length - 1].progressShow = [代码][代码]false[代码][代码];[代码][代码] [代码][代码]//wx.showToast({ title: '上传成功!', image: '../../utils/imgs/success-150.png', duration: 3000 });[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]wx.showToast({title: data.msg, icon: [代码][代码]'none'[代码][代码], duration: 3000});[代码][代码] [代码][代码]apply.progressArray.splice(apply.progressArray.length - 1, 1);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]empJobApply: apply[代码][代码] [代码][代码]});[代码][代码] [代码][代码]},[代码][代码] [代码][代码]fail: upload_res => {[代码][代码] [代码][代码]console.info([代码][代码]'[recursionUploadFile fail]----->'[代码][代码], upload_res);[代码][代码] [代码][代码]if[代码] [代码](upload_res.errMsg == [代码][代码]'uploadFile:fail abort'[代码][代码]) {[代码][代码] [代码][代码]wx.showToast({[代码][代码] [代码][代码]title: [代码][代码]'已取消上传'[代码][代码],[代码][代码] [代码][代码]icon: [代码][代码]'none'[代码][代码],[代码][代码] [代码][代码]duration: 1500[代码][代码] [代码][代码]});[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]wx.showToast({[代码][代码] [代码][代码]title: [代码][代码]'上传失败!'[代码][代码],[代码][代码] [代码][代码]image: [代码][代码]'../../utils/imgs/error-150.png'[代码][代码],[代码][代码] [代码][代码]duration: 1500[代码][代码] [代码][代码]});[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]apply.progressArray.splice(apply.progressArray.length - 1, 1);[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]empJobApply: apply[代码][代码] [代码][代码]});[代码][代码] [代码][代码]},[代码][代码] [代码][代码]complete: upload_res => {[代码][代码] [代码][代码]console.info([代码][代码]'[recursionUploadFile complete]----->'[代码][代码], upload_res);[代码][代码] [代码][代码]if[代码] [代码]((current + 1) === filePaths.length) [代码][代码]return[代码][代码];[代码][代码] [代码][代码]that.recursionUploadFile(filePaths, ++current, formData);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]});[代码][代码] [代码][代码]apply.progressArray[apply.progressArray.length - 1].task = uploadTask;[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]empJobApply: apply[代码][代码] [代码][代码]});[代码][代码] [代码][代码]//监听上传进度[代码][代码] [代码][代码]uploadTask.onProgressUpdate((progress_res) => {[代码][代码] [代码][代码]apply.progressArray[apply.progressArray.length - 1].progress = progress_res.progress;[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]empJobApply: apply[代码][代码] [代码][代码]});[代码][代码] [代码][代码]console.log([代码][代码]'[上传进度]----->'[代码][代码], progress_res.progress);[代码][代码] [代码][代码]console.log([代码][代码]'[已经上传的数据长度]----->'[代码][代码], progress_res.totalBytesSent);[代码][代码] [代码][代码]console.log([代码][代码]'[预期需要上传的数据总长度]----->'[代码][代码], progress_res.totalBytesExpectedToSend);[代码][代码] [代码][代码]});[代码][代码] [代码][代码]//取消上传任务[代码][代码] [代码][代码]//uploadTask.abort();[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]//删除上传图片[代码][代码] [代码][代码]deleteImage: [代码][代码]function[代码] [代码](e) {[代码][代码] [代码][代码]console.info([代码][代码]'[deleteImage]----->'[代码][代码], e);[代码][代码] [代码][代码]var[代码] [代码]that = [代码][代码]this[代码][代码];[代码][代码] [代码][代码]var[代码] [代码]ploopIndex = e.currentTarget.dataset.ploopindex;[代码][代码] [代码][代码]var[代码] [代码]apply = that.data.empJobApply;[代码][代码] [代码][代码]apply.imageIdArray.splice(ploopIndex, 1);[代码][代码] [代码][代码]apply.jobImageArray.splice(ploopIndex, 1);[代码][代码] [代码][代码]apply.imageId = apply.imageIdArray.join([代码][代码]','[代码][代码]);[代码][代码] [代码][代码]apply.jobImage = apply.jobImageArray.join([代码][代码]','[代码][代码]);[代码][代码] [代码][代码]if[代码] [代码](apply.progressArray[ploopIndex] && apply.progressArray[ploopIndex].uploading) {[代码][代码] [代码][代码]apply.progressArray[ploopIndex].task.abort();[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]apply.progressArray.splice(ploopIndex, 1);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]empJobApply: apply[代码][代码] [代码][代码]});[代码][代码] [代码][代码]},[代码]
怎么解决多图上传服务器成功后返回的图片id逐一赋给图片?在本人瞎想到的方法里,到最后一步将返回的id赋给页面属性时不是undefined就是统一设置成最后一张图返回的id。。。求大神们帮解决一下。看下图: [图片][图片] [图片] [图片] [图片]
2018-08-16可以试试下面两种方式: 1、 [代码]Map<String, String[]> paramMap = request.getParameterMap();[代码] 2、 [代码]/**[代码][代码] [代码][代码]* 获取文件上传请求中的表单参数[代码][代码] [代码][代码]*/[代码][代码]private[代码] [代码]Map<String, String> getFileUploadFormParameter(HttpServletRequest request) {[代码][代码] [代码][代码]Map<String, String> params = Maps.newHashMap();[代码][代码] [代码][代码]try[代码] [代码]{[代码][代码] [代码][代码]DiskFileItemFactory diskFileItemFactory = [代码][代码]new[代码] [代码]DiskFileItemFactory();[代码][代码] [代码][代码]ServletFileUpload servletFileUpload = [代码][代码]new[代码] [代码]ServletFileUpload(diskFileItemFactory);[代码][代码] [代码][代码]List<FileItem> fileItems = servletFileUpload.parseRequest(request);[代码][代码] [代码][代码]for[代码] [代码](FileItem fileItem : fileItems) {[代码][代码] [代码][代码]logger.info([代码][代码]"getFileUploadFormParameter fieldName----->"[代码] [代码]+ fileItem.getFieldName());[代码][代码] [代码][代码]if[代码] [代码](fileItem.isFormField()) {[代码][代码] [代码][代码]//此处为表单参数,表单参数名称:fileItem.getFieldName(),表单参数值:fileItem.getString("UTF-8")。[代码][代码] [代码][代码]params.put(fileItem.getFieldName(), fileItem.getString([代码][代码]"UTF-8"[代码][代码]));[代码][代码] [代码][代码]logger.info([代码][代码]"getFileUploadFormParameter fieldValue----->"[代码] [代码]+ fileItem.getString([代码][代码]"UTF-8"[代码][代码]));[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]//此处为非表单参数即文档参数[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]} [代码][代码]catch[代码] [代码](Exception e) {[代码][代码] [代码][代码]e.printStackTrace();[代码][代码] [代码][代码]logger.error([代码][代码]"getFileUploadFormParameter Exception----->"[代码][代码], e);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]logger.info([代码][代码]"getFileUploadFormParameter params----->"[代码] [代码]+ JSON.toJSONString(params));[代码][代码] [代码][代码]return[代码] [代码]params;[代码][代码]}[代码]
uploadFile fromDatawx.uploadFile 添加fromData属性,后台采用SSH框架,无论是用struts2的接收方式,还是使用request.getParameter();方式,都获取不到传过去的值,但是可以接收到文件。 同样的后台接口和参数,wx.request可以接收到
2018-08-16仅供参考 [代码]app.js:[代码][代码]App({[代码][代码] [代码][代码]globalData: {[代码][代码] [代码][代码]dst_list: [][代码][代码] [代码][代码]},[代码][代码] [代码][代码]onLaunch: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]},[代码][代码] [代码][代码]getDistrict: [代码][代码]function[代码] [代码](callback) {[代码][代码] [代码][代码]var[代码] [代码]that = [代码][代码]this[代码] [代码];[代码][代码] [代码][代码]wx.request({[代码][代码] [代码][代码]url: [代码][代码]'http://aaa.com/api/index/getDistrict'[代码] [代码],[代码][代码] [代码][代码]method: [代码][代码]'post'[代码] [代码],[代码][代码] [代码][代码]data: {},[代码][代码] [代码][代码]header: {[代码][代码] [代码][代码]'content-type'[代码] [代码]: [代码][代码]'application/x-www-form-urlencoded'[代码] [代码],[代码][代码] [代码][代码]'Accept'[代码] [代码]: [代码][代码]'application/json'[代码][代码] [代码][代码]},[代码][代码] [代码][代码]success: [代码][代码]function[代码] [代码](response) {[代码][代码] [代码][代码]var[代码] [代码]ret = response.data;[代码][代码] [代码][代码]if[代码] [代码](ret.code == 1 ) {[代码][代码] [代码][代码]var[代码] [代码]dst_id = ret.data.dst_id;[代码][代码] [代码][代码]var[代码] [代码]dst_index = ret.data.dst_index;[代码][代码] [代码][代码]that.globalData.dst_list = ret.data.dst_list;[代码][代码] [代码][代码]if[代码] [代码](callback) callback(response);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]});[代码][代码] [代码][代码]}[代码][代码]});[代码] [代码]index.js:[代码][代码]const app = getApp();[代码][代码]Page({[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]dst_list: [][代码][代码] [代码][代码]},[代码][代码] [代码][代码]onLoad: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]var[代码] [代码]that = [代码][代码]this[代码] [代码];[代码][代码] [代码][代码]if[代码] [代码](app.globalData.dst_list.length > 0) {[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]dst_list: app.globalData.dst_list[代码][代码] [代码][代码]});[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]app.getDistrict([代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]dst_list: app.globalData.dst_list[代码][代码] [代码][代码]});[代码][代码] [代码][代码]});[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码]});[代码]
wx.request 太坑啦,有没有解决方案我在app.js处调用api,getDistrict()方法获取一些全局数据,写入storage里面备用。但是api数据不大,也就180B。 index.js需要调用getDistrict返回的数据。在手机调试下,getDistrict总是比后面的方法要执行慢,导致后面的数据需要用到getDistrict里面的数据又没法调用。 而在开发者工具下始终是正常的。因为在开发者工具下始终是getDistrict先完成,才执行index.js里面的方法。下面两个图可以反映这个情况。 有没有办法可以让getDistrict()执行完 全局数据加载以后再往下走? 这里也有一个问题,同样的代码,在手机上模拟时,获取api的时序是这样的,此时不能正确加载全局数据: [图片] 在开发者工具上,试了N次,始终是getDistrict先执行再执行下面的方法,这样程序就能正常运行: [图片] 为什么手机端和开发者端差异这么大。。
2018-07-20[图片] 上图就是git更新完后重新编译报错信息,然后删除项目重新导入或者退出工具重新打开就正常了。
小程序开发工具在本地用git更新代码后编译总是报错,上传打包也总提示缺少文件小程序开发工具在本地用git更新代码后编译总是报错,上传打包也总提示缺少文件,明明文件存在且正常,就好像是工具无法实时加载git更新下来的文件,需要删除项目重新导入或者退出工具重新打开才正常。
2018-06-29试试最新版本 [代码]1.02.1806120[代码]
开发工具本地存储开发者工具中的缓存清不掉,不管是哪一个项目,所有项目的缓存都在一个地方,清除也不管用!!!!!!!!!!!浪费一天时间,一直找问题!结果是开发者工具中的缓存一直在
2018-06-29[代码]let data = {[代码] [代码] [代码][代码]QueryJson: QueryJson,[代码] [代码] [代码][代码]page: 1,[代码] [代码] [代码][代码]Rows: 10[代码] [代码]}[代码]你需要改成这样才对。
微信小程序接口参数有两层怎么办//户型列表 getHouseLists() { var QueryJson = new Object() QueryJson = { Type: '4',//1-楼盘(小区) 2,3-楼阁 4-楼层 5-房间 KeyWord: '',//关键字 AreaId: '',//区域id PropertyId: '',//小区id RoomTypeName: '',//户型 Rental: ''//租金 } let data = { QueryJson, page: 1, Rows: 10 } // var data = new Object() // data.QueryJson['Type'] = '4' // data.QueryJson['KeyWord'] = '' // data.QueryJson['AreaId'] = '' // data.QueryJson['PropertyId'] = '' // data.QueryJson['RoomTypeName'] = '' // data.QueryJson['Rental'] = '' // page.page = 1, // page.Rows = 10 app.agriknow.getHouseLists(data) .then(res => { console.log(res) }) .catch(res => { }) }, 请求头header: 'Content-Type':'application/x-www-form-urlencoded;charset=utf-8' [图片] 其中QueryJson 一直是[object object] 然后后台接口一直提示接口参数错误 了解原因的大神解惑下 万分感激了在这
2018-06-29顶添加支持一次请求多文件上传,但是获取用户好友个数这个就不太好了,涉及隐私问题。
建议升级wx.uploadFile接口,支持多文件上传目前每次只能上传一个图片,如果有多个图片就要for循环,希望官方升级这个接口,允许多个文件同时上传, 下午大家都顶一下,让官方看到,也为以后遇到累死的问题扫清障碍 夹带点私货: 官方能否在用户登陆的时候,提供返回该用户好友个数的功能??
2018-06-29