首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微信小程序递归上传图片

微信小程序递归上传图片

作者头像
明知山
发布于 2022-05-05 12:09:48
发布于 2022-05-05 12:09:48
1.9K00
代码可运行
举报
文章被收录于专栏:前端开发随笔前端开发随笔
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
     <view class="col">
            <view class="file" wx:for="{{fileList}}" wx:key="index">
                <image mode="aspectFill" src="{{item}}" />
                <view class="del" data-index="{{index}}" bindtap="delFile">
                    <image mode="widthFix" src="https://sucai.suoluomei.cn/sucai_zs/images/20200521115446-38.png" />
                </view>
            </view>
            <view class="update" wx:if="{{upload}}" bindtap="uploadFile">
                <image mode="widthFix" src="https://sucai.suoluomei.cn/sucai_zs/images/20200521103739-37.png" />
                <text wx:if="{{photo == 0}}">添加照片</text>
                <text wx:if="{{photo == 1}}">{{count}}/5</text>
            </view>
        </view>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 data: {
  fileList: [],
  photo: 0,
  count: 0,
  upload: true
}
// 上传图片
  uploadFile() {
    wx.chooseImage({
      count: 5 - this.data.fileList.length,
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        this.getpublish(res.tempFilePaths, 0)
      }
    })
  },
  // 递归上传
  getpublish(list, i) {
    wx.showLoading({
      title: '正在上传第' + (i + 1) + '张',
    })
    wx.uploadFile({
      url: "http://uploadFile",
      filePath: list[i],
      name: 'file',
      formData: {
        key: 'key'
      },
      success: (res) => {
        var info = JSON.parse(res.data)
        var array = this.data.fileList
        array.push(info.info.url)
        this.setData({
          fileList: array
        })
        if (i + 1 == list.length) {
          wx.showToast({
            title: '上传成功',
          });
        }
        wx.hideLoading()
        if (++i < list.length) {
          this.getpublish(list, i);
        }
        this.hideUpload()
      },
    })
  },
  // 删除图片
  delFile(e) {
    var index = e.currentTarget.dataset.index
    var list = this.data.fileList
    list.splice(index, 1)
    this.setData({
      fileList: list
    })
    this.hideUpload()
  },

  // 隐藏上传控件
  hideUpload() {
    var length = this.data.fileList.length
    if (length == 0) {
      this.setData({
        photo: 0,
        count: 0
      })
    } else {
      this.setData({
        photo: 1,
        count: length
      })
    }
    // 隐藏上传图片
    if (length >= 5) {
      this.setData({
        upload: false
      })
    } else {
      this.setData({
        upload: true
      })
    }
  }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Spark2.4.0源码分析之WorldCount 事件循环处理器(三)
Spark2.4.0源码分析之WorldCount 事件循环处理器(三) 更多资源 github: https://github.com/opensourceteams/spark-scala-maven-2.4.0 时序图 https://github.com/opensourceteams/spark-scala-maven-2.4.0/blob/master/md/image/example/spark-sql-dataset/worldCount/DAGSchedulerEventProcessLo
thinktothings
2019/01/17
4710
Spark2.4.0源码分析之WorldCount 事件循环处理器(三)
Spark Core源码精读计划5 | 事件总线及ListenerBus
在讲解SparkContext组件初始化时,第一个初始化的内部组件就是LiveListenerBus,后面的组件很多都会依赖它,这从侧面说明事件总线是非常重要的支撑组件。在对SparkContext有了大致的了解之后,我们选择事件总线作为探索Spark底层的起点。
大数据真好玩
2019/08/08
1K0
Spark2.4.0源码分析之WorldCount Stage划分(DAGScheduler)(四)
private def doOnReceive(event: DAGSchedulerEvent): Unit = event match {
thinktothings
2019/01/17
7160
Spark2.4.0源码分析之WorldCount Stage划分(DAGScheduler)(四)
深入理解Spark 2.1 Core (四):运算结果处理和容错的原理与源码分析
在上一篇博文《深入理解Spark 2.1 Core (三):任务调度器的实现与源码分析 》TaskScheduler在发送任务给executor前的工作就全部完成了。这篇博文,我们来看看当executor计算完任务后,Spark是如何处理获取的计算结果与容错的。
小爷毛毛_卓寿杰
2019/02/13
1K0
spark源码分析————DAGScheduler实现
DAGScheduler创建、Job提交、Stage划分、任务生成
俺也想起舞
2019/07/24
5660
《深入理解Spark-核心思想与源码分析》读书笔记(1)
本文介绍了Spark编程模型的基本概念、原理和主要组件,包括SparkContext、SparkSession、SparkDAGScheduler、SparkTaskScheduler、SparkShuffleManager、SparkMemoryManager、SparkEnvironment、SparkIdeaPlugin、SparkScheduler、SparkApplication、SparkContext等。同时,本文还介绍了Spark在大数据处理、实时数据处理、机器学习、图计算等方面的应用。此外,本文还介绍了Spark的生态系统,包括SparkR、Spark Streaming、Spark Structured Streaming、Spark GraphX、Spark MLlib、Spark UI等。
用户1148523
2018/01/09
1.1K0
《深入理解Spark-核心思想与源码分析》读书笔记(1)
Spark Stage切分 源码剖析——DAGScheduler
Spark中的任务管理是很重要的内容,可以说想要理解Spark的计算流程,就必须对它的任务的切分有一定的了解。不然你就看不懂Spark UI,看不懂Spark UI就无法去做优化...因此本篇就从源码的角度说说其中的一部分,Stage的切分——DAG图的创建 先说说概念 在Spark中有几个维度的概念: 应用Application,你的代码就是一个应用 Job,Job是以action为边界的。 Stage,是按照宽窄依赖来界定的 Task,最终落实到各个工作节点上的任务,是真正意义上的任务 光说上面的
用户1154259
2018/01/17
1.4K0
Spark Stage切分 源码剖析——DAGScheduler
[spark] DAGScheduler划分stage源码解析
Spark Application只有遇到action操作时才会真正的提交任务并进行计算,DAGScheduler 会根据各个RDD之间的依赖关系形成一个DAG,并根据ShuffleDependency来进行stage的划分,stage包含多个tasks,个数由该stage的finalRDD决定,stage里面的task完全相同,DAGScheduler 完成stage的划分后基于每个Stage生成TaskSet,并提交给TaskScheduler,TaskScheduler负责具体的task的调度,在Worker节点上启动task。
UFO
2018/09/04
8980
[spark] DAGScheduler划分stage源码解析
【源码解读】| LiveListenerBus源码解读
异步事件列队主要由LinkedBlockingQueue[SparkListenerEvent] 构建,默认大小为10000
857技术社区
2022/07/07
1.6K0
【源码解读】| LiveListenerBus源码解读
[Spark源码剖析] JobWaiter
来创建容纳job结果的数据,数组的每个元素对应与之下标相等的partition的计算结果;并将结果处理函数(index, res) => results(index) = res作为参数传入runJob,以使在runJob内部的创建的JobWaiter对象能够在得知taskSucceeded之后,将该task的结果填充到results中
codingforfun
2018/08/24
4240
Spark Core源码精读计划6 | AsyncEventQueue与LiveListenerBus
在上一篇文章中,我们了解了Spark事件总线机制的概况,以及ListenerBus、SparkListenerBus的细节。
大数据真好玩
2019/08/08
1.2K0
深入理解Spark 2.1 Core (二):DAG调度器的原理与源码分析
上一篇《深入理解Spark 2.0 (一):RDD实现及源码分析 》的5.2 Spark任务调度器我们省略过去了,这篇我们就来讲讲Spark的调度器。
小爷毛毛_卓寿杰
2019/02/13
1K0
深入理解Spark 2.1 Core (二):DAG调度器的原理与源码分析
Spark DAG调度
SparkContext在初始化时,创建了DAG调度与Task调度来负责RDD Action操作的调度执行。 DAGScheduler DAGScheduler负责Spark的最高级别的任务调度,调度的粒度是Stage,它为每个Job的所有Stage计算一个有向无环图,控制它们的并发,并找到一个最佳路径来执行它们。具体的执行过程是将Stage下的Task集提交给TaskScheduler对象,由它来提交到集群上去申请资源并最终完成执行。 DAGScheduler的定义位于scheduler/DAGSched
天策
2018/06/22
8800
Spark2.4.0源码分析之WorldCount Stage提交顺序(DAGScheduler)(五)
Spark2.4.0源码分析之WorldCount Stage提交顺序(DAGScheduler)(五) 更多资源 github: https://github.com/opensourceteams/spark-scala-maven-2.4.0 时序图 https://github.com/opensourceteams/spark-scala-maven-2.4.0/blob/master/md/image/example/spark-sql-dataset/worldCount/worldCount
thinktothings
2019/01/17
1.1K0
Spark2.4.0源码分析之WorldCount Stage提交顺序(DAGScheduler)(五)
Spark源码分析 之 Driver和Excutor是怎么跑起来的?(2.2.0版本)
今天抽空回顾了一下Spark相关的源码,本来想要了解一下Block的管理机制,但是看着看着就回到了SparkContext的创建与使用。正好之前没有正式的整理过这部分的内容,这次就顺带着回顾一下。 更多内容参考:我的大数据之路 Spark作为目前最流行的大数据计算框架,已经发展了几个年头了。版本也从我刚接触的1.6升级到了2.2.1。由于目前工作使用的是2.2.0,所以这次的分析也就从2.2.0版本入手了。 涉及的内容主要有: Standalone模式中的Master与Worker client、dr
用户1154259
2018/01/17
7260
Spark源码分析 之 Driver和Excutor是怎么跑起来的?(2.2.0版本)
Spark中的Scheduler「建议收藏」
scheduler分成两个类型。一个是TaskScheduler与事实上现,一个是DAGScheduler。
全栈程序员站长
2022/07/07
7450
Spark源码系列(三)作业运行过程
作业执行 上一章讲了RDD的转换,但是没讲作业的运行,它和Driver Program的关系是啥,和RDD的关系是啥? 官方给的例子里面,一执行collect方法就能出结果,那我们就从collect开始看吧,进入RDD,找到collect方法。 def collect(): Array[T] = { val results = sc.runJob(this, (iter: Iterator[T]) => iter.toArray) Array.concat(results: _*)
岑玉海
2018/02/28
1.2K0
Spark源码系列(三)作业运行过程
Spark ListenerBus 和 MetricsSystem 体系分析
监控是一个大系统完成后最重要的一部分。Spark整个系统运行情况是由ListenerBus以及MetricsSystem 来完成的。这篇文章重点分析他们之间的工作机制以及如何通过这两个系统完成更多的指标收集。
用户2936994
2018/08/27
7510
Spark Core源码精读计划15 | 心跳接收器HeartbeatReceiver
按照SparkContext初始化的顺序,下一个应该是心跳接收器HeartbeatReceiver。由于笔者感染乙流仍然没有痊愈,状态不好,文中若有疏漏,请批评指正。
大数据真好玩
2019/08/19
1.2K0
Spark Core源码精读计划3 | SparkContext辅助属性及后初始化
在文章#2中,我们了解了SparkContext的主体部分,即组件初始化。除了它之外,SparkContext中还有一些与其内部机制紧密相关的属性,下文为了简单,就将它们称为“辅助属性”。另外,在组件初始化完成后,还有一些善后工作,即后初始化(Post-init)。本文就来研究这两块内容。
王知无-import_bigdata
2019/08/02
8130
Spark Core源码精读计划3 | SparkContext辅助属性及后初始化
推荐阅读
相关推荐
Spark2.4.0源码分析之WorldCount 事件循环处理器(三)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验