效果图


部分源代码


js文件:

var uploadPicture = require('../Frameworks/common.js')
//获取应用实例
const app = getApp()
data:{
// 上传的案例图片集合
uploadImages: [],
// 设置上传案例图片的最大数目
maxImages: 9,
// 案例图片数目是否达到了最大数目
isMaxImagesNum: false,
}, // 选择图片
chooseImageTap: function() {
let _this = this;
wx.showActionSheet({
itemList: ['从相册中选择', '拍照'],
itemColor: "#f7982a",
success: function(res) {
if (!res.cancel) {
if (res.tapIndex == 0) {
_this.chooseWxImage('album')
} else if (res.tapIndex == 1) {
_this.chooseWxImage('camera')
}
}
}
})
}, // 选图
chooseWxImage: function(type) {
let _this = this;
var picsItems;
wx.chooseImage({
// 相关属性设置
count: _this.data.maxImages,
sizeType: ['original', 'compressed'],
sourceType: [type],
success: function(res) {
var imgsrc = res.tempFilePaths;
// concat数组连接,且不会改变现有数组
var picss = _this.data.uploadImages.concat(imgsrc);
var imagesArr = '';
if (picss.length >= _this.data.maxImages) {
_this.setData({
isMaxImagesNum: true
});
}
// 判断选择的数量是否超过设定数量
let num = picss.length <= _this.data.maxImages ? picss.length : _this.data.maxImages;
for (var i = 0; i < num; i++) {
imagesArr += '{"imgurl":"' + picss[i] + '"},';
}
imagesArr = JSON.parse('[' + imagesArr.substring(0, imagesArr.length - 1) + ']');
_this.setData({
uploadImages: picss,
picsItems: imagesArr
});
}
})
}, // 预览所选图片
selImagePre: function(e) {
let _this = this;
wx.previewImage({
urls: this.data.uploadImages,
current: e.currentTarget.dataset.src
})
}, // 图片上传
submitAction: function() {
// 上传所选图片
uploadPicture.uploadimg({
// 传图同时携带的参数
url: app.globalData.baseUrl + 'freePeopleDemoImgs.php',
path: _this.data.uploadImages,
name: 'caseImages',
date: Date.now(),
})
},

common.js

function uploadimg(data) {
console.log(data.date)
var that = this,
i = data.i ? data.i : 0,
success = data.success ? data.success : 0,
fail = data.fail ? data.fail : 0; wx.uploadFile({
url: data.url,
filePath: data.path[i],
name: data.name,
formData: {
// 同时上传userId和当前时间
userId: app.globalData.userId,
date: data.date,
},
success: (resp) => {
success++;
app.globalData.xqimgList += resp.data + ",";
},
fail: (res) => {
fail++;
console.log('fail:' + i + "fail:" + fail);
},
complete: () => {
i++;
if (i == data.path.length) { // 图片传完时停止调用 } else { // 图片还没有传完继续调用函数
data.i = i;
data.success = success;
data.fail = fail;
that.uploadimg(data);
}
}
});
} module.exports = {
uploadimg: uploadimg,
}

源码:https://download.csdn.net/download/yimjune/10757386

原文:https://blog.csdn.net/feng2qing/article/details/81276860

微信小程序多图上传/朋友圈传图效果【附完整源码】的更多相关文章

  1. 微信小程序多张图片上传

    微信小程序上传图片每次只能上传一张,所有很多朋友就会问想要多张图片上传怎么办? 首先,我们来看一看wx.chooseImage(object)和wx.uploadFile(OBJECT)这两个个api ...

  2. [转]微信小程序实现图片上传功能

    本文转自:http://blog.csdn.net/feter1992/article/details/77877659 前端: 微信开发者工具 后端:.Net 服务器:阿里云 这里介绍微信小程序如何 ...

  3. nodeJs实现微信小程序的图片上传

    今天我来介绍一下nodejs如何实现保存微信小程序传过来的图片及其返回 首先wx.uploadFile绝大部分时候是配合wx.chooseImage一起出现的,毕竟选择好了图片,再统一上传是实现用户图 ...

  4. 微信小程序实现图片上传功能

    前端: 微信开发者工具 后端:.Net 服务器:阿里云 这里介绍微信小程序如何实现上传图片到自己的服务器上 前端代码 data: { productInfo: {} }, //添加Banner bin ...

  5. 微信小程序--实现图片上传

    前端: 微信开发者工具 后端:.Net 服务器:阿里云 这里介绍微信小程序如何实现上传图片到自己的服务器上 前端代码 data: { productInfo: {} }, //添加Banner bin ...

  6. 微信小程序中图片上传阿里云Oss

    本人今年6月份毕业,最近刚在上海一家小公司实习,做微信小程序开发.最近工作遇到一个小问题. 微信小程序图片上传阿里云服务器Oss也折腾了蛮久才解决的,所以特意去记录一下. 第一步:配置阿里云地址: 我 ...

  7. [组件封装]微信小程序-图片批量上传照片墙

    描述 批量上传图片, 可设置最大上传个数, 可删除, 可设置默认值. 效果 源码 pictures-wall.wxml <view class="picturesWall"& ...

  8. 微信小程序初体验(上)

    版权声明:本文由练小习原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/204 来源:腾云阁 https://www.qclo ...

  9. 坑:微信小程序wx.request和wx.uploadFile中传参数的区别

    微信小程序中通过组件<form>提交表单的时候,在js中通过e.detail.value得到所提交表单的json格式数据.一般提交表单我们都是通过wx.request请求,提交表单数据,通 ...

  10. 【微信小程序】---线上环境搭建

    一.前言 通常我们在本地电脑上开发微信小程序,调用和访问小程序会有很多问题.特别是在配有自己后端的情况下,我们通过真机访问我们的小程序会出现不可访问的问题 二.线上环境搭建 在这里我们主要以腾讯云给大 ...

随机推荐

  1. Android中无标题样式和全屏样式学习

    在进行UI设计时,我们经常需要将屏幕设置成无标题栏或者全屏.要实现起来也非常简单,主要有两种方法:配置xml文件和编写代码设置. 1.在xml文件中进行配置 在项目的清单文件AndroidManife ...

  2. 分布式锁1 Java常用技术方案【转载】

    前言:       由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题.所以自己结合实际工作中的一些经验和网上看到的一些资 ...

  3. 【摘自张宴的"实战:Nginx"】nginx配置

    user nobody;worker_processes 2; #error_log logs/error.log;error_log logs/error.log notice;#error_log ...

  4. 15-struct(构造函数,重载)

    必须充分掌握struct的使用,包括其构造和重载函数的写法: #include <iostream> using namespace std; struct node { int x, y ...

  5. Python 使用其他邮件服务商的 SMTP 访问(QQ、网易、163、Google等)发送邮件

    163邮箱SMTP授权 使用Python SMTP发送邮件 # -*- coding:utf-8 -*- from __future__ import print_function __author_ ...

  6. git命令(一)

    git中每个版本的保存是记录每个版本的快照,只在乎这个文件是否改变. Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 ...

  7. HTTP 协议 -- 状态码

    HTTP 协议状态码(Http Status Code) 使用ASP.NET/PHP/JSP 或者javascript都会用到http的不同状态,一些常见的状态码为: 200 – 服务器成功返回网页 ...

  8. chrome浏览器跨域模式设置

    做前后分离的webapp开发的时候,出于一些原因往往需要将浏览器设置成支持跨域的模式,好在chrome浏览器就是支持可跨域的设置,网上也有很多chrome跨域设置教程.但是新版本的chrome浏览器提 ...

  9. Git master branch has no upstream branch的解决

    Git master branch has no upstream branch的解决 在push代码时,出现“git master branch has no upstream branch”问题的 ...

  10. Ready api groovy script 参数化

    def token_type =context.expand ('${#Project#token_type}') def access_token = context.expand('${#Proj ...