广告
返回顶部
首页 > 资讯 > 精选 >怎么用uni-app和uView实现多图上传功能
  • 251
分享到

怎么用uni-app和uView实现多图上传功能

2023-07-05 18:07:43 251人浏览 泡泡鱼
摘要

本篇内容主要讲解“怎么用uni-app和uView实现多图上传功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用uni-app和uView实现多图上传功能”吧!效果图上传初始状态:上传图片

本篇内容主要讲解“怎么用uni-app和uView实现多图上传功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用uni-app和uView实现多图上传功能”吧!

效果图

上传初始状态:

怎么用uni-app和uView实现多图上传功能

上传图片:

怎么用uni-app和uView实现多图上传功能

uView Upload组件

先来认识一下uView的Upload组件。Upload组件用于图片上传场景。Upload组件支持如下平台

Upload组件支持手动上传与自动上传,可以限制图片大小以及图片数量。可以配置上传前的钩子与删除文件前的钩子,灵活性还是比较大的。有兴趣的可以去看下相关的组件文档,这里就不多做介绍了。

view部分

不多废话,来到正文:

图片上传一般可以单独使用,也可以跟其他fORM组件放在一起,示例中其他组件的使用不在本篇内容范畴内,所以一行代码用以表示。只展示主要代码。

<view class="container"><view class="font-size-16 text-9B9B9B margin-top-10">上传图片</view>    <view class="text-9B9B9B">图片宽度和高度都不能低于500像素,至少3张,最多15张!</view><u-form-item label="" v-show="false" :border-bottom="false" prop="coverImage"><u-input v-model="form.coverImage" :disabled="false" placeholder=""></u-input></u-form-item></view>

这段代码定义了上传图片的提示文字,以及封面图!

<view class="container padding-vertical-15">    <view class="pre-box">        <block v-for="(item, index) in imageList" :key="index">            <view class="pre-item">                <image class="pre-item-image" :src="item.url" mode="aspectFill"></image>                <view class="u-delete-icon" @click="deleteItem(index)">                    <u-icon name="close" size="20" color="#ffffff"></u-icon>                </view>                <view class="default-image-box">                    <u-checkbox shape="circle" v-model="item.checked" labelColor="#FFFFFF" active-color="#19be6b" label-size="24" :name="index" size="24"                     @change="setDefault(index)">设为封面</u-checkbox>                </view>                <view class="default-image-box-mask"></view>            </view>        </block>        <view class="pre-item">            <u-upload ref="imageUpload" :action="imageUploadUrl" :show-tips="false" :disabled="hiddImageUpload" :auto-upload="true"            :max-count="imageMaxCount" :upload-text="imageUploadText" :show-upload-list="false" @on-success="imageUploadSuccess"            @on-error="uploadError">                <view slot="addBtn" class="slot-btn" hover-class="slot-btn__hover" hover-stay-time="150">                    <u-icon name="camera" size="60" :color="$u.color['lightColor']"></u-icon>                    <view>{{imageUploadText}}</view>                </view>            </u-upload>        </view>    </view></view>

这段代码中,定义了上传成功后的图片预览、以及上传组件的展示。图片列表里,还有设为封面的功能。

完整代码:

<template>    <view>        <u-form :model="form" ref="uForm" :rules="rules" :error-type="errorType">            <u-form-item label="表单项" label-width="160rpx" :border-bottom="true">                        //...            </u-form-item>            <!--图片上传-->            <view class="container">                <view class="font-size-16 text-9B9B9B margin-top-10">上传图片</view>                <view class="text-9B9B9B">图片宽度和高度都不能低于500像素,至少3张,最多15张!</view>                <u-form-item label="" v-show="false" :border-bottom="false" prop="coverImage"><u-input v-model="form.coverImage" :disabled="false" placeholder=""></u-input></u-form-item>            </view>            <view class="container padding-vertical-15">                <view class="pre-box">                    <block v-for="(item, index) in imageList" :key="index">                        <view class="pre-item">                            <image class="pre-item-image" :src="item.url" mode="aspectFill"></image>                            <view class="u-delete-icon" @click="deleteItem(index)">                                <u-icon name="close" size="20" color="#ffffff"></u-icon>                            </view>                            <view class="default-image-box"><u-checkbox shape="circle" v-model="item.checked" labelColor="#FFFFFF" active-color="#19be6b" label-size="24" :name="index" size="24" @change="setDefault(index)">设为封面</u-checkbox></view><view class="default-image-box-mask"></view>                        </view>                    </block>                    <view class="pre-item">                        <u-upload ref="imageUpload" :action="imageUploadUrl" :show-tips="false" :disabled="hiddImageUpload" :auto-upload="true"                        :max-count="imageMaxCount" :upload-text="imageUploadText" :show-upload-list="false" @on-success="imageUploadSuccess"                        @on-error="uploadError">                            <view slot="addBtn" class="slot-btn" hover-class="slot-btn__hover" hover-stay-time="150">                                <u-icon name="camera" size="60" :color="$u.color['lightColor']"></u-icon>                                <view>{{imageUploadText}}</view>                            </view>                        </u-upload>                    </view>                </view>            </view>            <!--/图片上传-->            <u-form-item label="表单项" label-width="160rpx" :border-bottom="true">                        //...            </u-form-item>        </u-form>    </view></template>

上传代码片段前后都定义了一个form-item组件,你可跟实际需要增加或者删除就可以了。

script部分

<script>export default{    data(){        return{            //form提交表单            form:{                coverImage:""            },            rules:{},//表单校验规则            imageMaxCount: 10,//最多上传多少张imageList: [],//上传完成后的图片列表            imageUploadText: "",//上传组件的文字            hiddImageUpload: false,//是否隐藏上传组件            imageIndex: 0,//图片索引            imageUploadUrl: this.$settings.uploadUrl,//上传图片的api地址            errorType: ['border-bottom', 'toast'],//出差提示,参考uView的form组件        }    },    onReady() {        this.$refs.uForm.setRules(this.rules);    },    onLoad(){        this.initUploadText();    },    methods(){        initUploadText(){            this.imageUploadText = this.imageMaxCount - this.imageList.length + "/" + this.imageMaxCount;this.hiddImageUpload = (this.imageMaxCount - this.imageList.length) == 0 ? true : false;        },        deleteItem(index) {            this.imageList.splice(index, 1);            this.$refs.imageUpload.remove(index);            this.initUploadText()        },        uploadError() {            this.$u.toast('上传失败!');        },        imageUploadSuccess(data, index, lists, name) {            let that = this;            if (data.status == 200) {                let itemData = data.data;                itemData.url = itemData.url;                itemData.index = index;                that.imageList.push(itemData);                that.initUploadText();            } else {                that.$u.toast('上传失败!');            }        },        setDefault(index) {            let that = this;            that.imageList = that.imageList.map(function(item, _index, arr) {                if (index == _index) {                    item.checked = true;                    that.form.coverImage = item.url;                } else {                    item.checked = false;                }                return item;});},    }}</script>

data部分已经有了注释了,不做特别说明。

上传组件定义了ref="imageUpload",可以通过ref手动操作图片的upload(手动上传图片)clear(清空内部文件列表)reUpload(重新上传)remove(index):删除某张图片,index为imageList的索引。这个看实际需要,自己实现一下就可以了。

onReadythis.$refs.uForm.setRules(this.rules); 主要功能是设置表单验证,根据实际需要自行决定,非必须的哦!

  • initUploadText:方法是设置上传的文字,也就是那个15/15。

  • deleteItem:方法是删除图片列表中的某张图片。这里就用到了ref="imageUpload"的手动方法this.$refs.imageUpload.remove(index);

  • uploadError:上传图片出错的提示。

  • imageUploadSuccess:图片上传成功要做的一些事情。

  • setDefault:设置封面图。

样式

<style>.container{padding:0 30rpx}.font-size-16{font-size:32rpx;}.text-9B9B9B{color:#9B9B9B}.margin-top-10{margin-top:2orpx;}.padding-vertical-15{padding:30rpx 0;}.pre-box {display: flex;align-items: center;justify-content: flex-start;flex-wrap: wrap;}.pre-item {width: 160rpx;height: 160rpx;overflow: hidden;position: relative;margin-right: 10rpx;margin-bottom: 20rpx;}.pre-item-image {width: 100%;height: 160rpx;}.u-delete-icon {position: absolute;top: 0rpx;right: 0rpx;z-index: 10;background-color: #fa3534;border-radius: 100rpx;width: 44rpx;height: 44rpx;display: flex;align-items: center;justify-content: center;}.slot-btn {width: 160rpx;height: 160rpx;display: flex;justify-content: center;align-items: center;background: rgb(244, 245, 246);border-radius: 10rpx;flex-direction: column;}.slot-btn__hover {background-color: rgb(235, 236, 238);}</style>

到此,相信大家对“怎么用uni-app和uView实现多图上传功能”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么用uni-app和uView实现多图上传功能

本文链接: https://www.lsjlt.com/news/354255.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用uni-app和uView实现多图上传功能
    本篇内容主要讲解“怎么用uni-app和uView实现多图上传功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用uni-app和uView实现多图上传功能”吧!效果图上传初始状态:上传图片...
    99+
    2023-07-05
  • uni-app使用uploadFile上传多张图片的具体实现
    目录前言:一、需求概述二、相关文档三、具体实现方法总结前言: 最近的工作中出现了一个功能点,具体写法我在前面的文章中已经阐述过,不过之前的情况是上传图片调用后端的一个接口,整个表单页...
    99+
    2023-05-18
    uni-app 上传文件 uploadfile上传多张图片 uni-app uploadfile
  • HTML5中怎么实现多图上传功能
    HTML5中怎么实现多图上传功能,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。HTML结构:<div class=&quo...
    99+
    2022-10-19
  • Ajax怎么实现上传图像功能
    这篇“Ajax怎么实现上传图像功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Ajax怎么实现上传图像功能”文章吧。最终效...
    99+
    2023-06-29
  • PHP怎么实现上传图片功能
    本篇内容主要讲解“PHP怎么实现上传图片功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP怎么实现上传图片功能”吧!首先我们在form表单加上上传附件#file,上传按钮#imgbut,记...
    99+
    2023-06-04
  • 使用Html5怎么实现单张、多张图片上传功能
    这篇文章主要介绍了使用Html5怎么实现单张、多张图片上传功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言今天我们聊一聊图片上传,单张Or多张 ,如今,各大图片上传插件...
    99+
    2023-06-09
  • angularjs怎么实现多张图片上传并预览功能
    这篇文章主要介绍angularjs怎么实现多张图片上传并预览功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下directive.js    angu...
    99+
    2022-10-19
  • 如何使用HTML5实现多张图片上传功能
    小编给大家分享一下如何使用HTML5实现多张图片上传功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! HTML结构: &l...
    99+
    2022-10-19
  • thinkphp5怎么加layui实现图片上传功能
    本篇内容介绍了“thinkphp5怎么加layui实现图片上传功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!网站中很多表单都会用到上传图...
    99+
    2023-07-05
  • html5中怎么实现多文件上传功能
    本篇文章为大家展示了html5中怎么实现多文件上传功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 主要用到的是<input&...
    99+
    2022-10-19
  • Spring MVC图片的上传和下载功能怎么实现
    这篇文章主要介绍了Spring MVC图片的上传和下载功能怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring MVC图片的上传和下载功能怎么实现文章都会有所收获,下面我们一起...
    99+
    2023-07-05
  • html5中怎么实现图片上传预览功能
    今天就跟大家聊聊有关html5中怎么实现图片上传预览功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。<!DOCTYPE html&...
    99+
    2022-10-19
  • Nodejs中怎么实现图片上传和压缩预览功能
    这篇文章给大家介绍Nodejs中怎么实现图片上传和压缩预览功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、引入基本配置const Koa = req...
    99+
    2022-10-19
  • vue使用element实现上传图片和修改图片功能
    目录前言一、应用场景1.上传图片并进行放大预览2.图片上传代码二、修改已经上传的图片,并展示到图片列表中1.效果展示(先展示原来的图片,再上传新图片,也可删除原来的图片)2.编辑代码...
    99+
    2022-11-13
  • Android中怎么实现图片压缩与上传功能
    Android中怎么实现图片压缩与上传功能,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。首先需要对图片进行压缩,这方面可以使用第三方的库,我在实际的开发中使用的...
    99+
    2023-05-30
    android
  • 微信小程序图片上传功能怎么实现
    这篇文章主要介绍“微信小程序图片上传功能怎么实现”,在日常操作中,相信很多人在微信小程序图片上传功能怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序图片上传功能怎么实现”的疑惑有所帮助!接下来...
    99+
    2023-06-30
  • 利用Spring Boot怎么样实现一个图片上传功能
    利用Spring Boot怎么样实现一个图片上传功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。具体内容如下package com.clou.inteface.domain....
    99+
    2023-05-31
    springboot spring boo
  • Html5 中怎么利用FileReader实现即时上传图片功能
    Html5 中怎么利用FileReader实现即时上传图片功能,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。<!DOCT...
    99+
    2022-10-19
  • 利用node+koa+axios实现图片上传和回显功能
    目录前言开发前需要掌握的一些库代码结构实现代码前言 代码地址 开发前需要掌握的一些库 koa:用来起一个web服务器 koa2-cors: 解决跨域问题 @koa/router: k...
    99+
    2022-11-13
  • HTML5中怎么实现一个图片压缩上传功能
    这篇文章给大家介绍HTML5中怎么实现一个图片压缩上传功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、创建一个图片和一个canvasXML/HTML Code复制内容到剪贴板va...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作