【uniapp小程序】上传图片

文章目录

🍍前言

本篇文章我们研究一下,在移动端开发过程中经常使用到的图片上传功能。在大多数小程序或者APP中都会遇到一些实名认证或者头像上传的功能。uniapp官方也提供了相应的API供我们使用。
官网地址:uni.chooseImage(OBJECT)

🍋正文

1、首先看官网

uni.chooseImage(OBJECT) API 介绍

从本地相册选择图片或使用相机拍照。

App端如需要更丰富的相机拍照API(如直接调用前置摄像头),参考plus.camera

微信小程序从基础库 2.21.0 开始,wx.chooseImage 停止维护,请使用uni.chooseMedia 代替。

OBJECT 参数说明

参数名类型必填说明平台差异说明countNumber否最多可以选择的图片张数,默认9见下方说明sizeTypeArray否original 原图,compressed 压缩图,默认二者都有App、微信小程序、支付宝小程序、百度小程序extensionArray否根据文件拓展名过滤,每一项都不能是空字符串。默认不过滤。H5(HBuilder X2.9.9+)sourceTypeArray否album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项cropObject否图像裁剪参数,设置后 sizeType 失效App 3.1.19+successFunction是成功则返回图片的本地文件路径列表 tempFilePathsfailFunction否接口调用失败的回调函数小程序、AppcompleteFunction否接口调用结束的回调函数(调用成功、失败都会执行)

crop 参数说明

参数名类型必填说明平台差异说明qualityNumber否取值范围为1-100,数值越小,质量越低(仅对jpg格式有效)。默认值为80。widthNumber是裁剪的宽度,单位为px,用于计算裁剪宽高比。heightNumber是裁剪的高度,单位为px,用于计算裁剪宽高比。resizeBoolean否是否将width和height作为裁剪保存图片真实的像素值。默认值为true。注:设置为false时在裁剪编辑界面显示图片的像素值,设置为true时不显示

Tips

  • count 值在 H5 平台的表现,基于浏览器本身的规范。目前测试的结果来看,只能限制单选/多选,并不能限制数量。并且,在实际的手机浏览器很少有能够支持多选的。
  • sourceType 值在 H5 平台根据浏览器的不同而表现不同,一般不可限制仅使用相册,部分浏览器也无法限制是否使用相机。
  • 可以通过用户授权API来判断用户是否给应用授予相册或摄像头的访问权限https://uniapp.dcloud.io/api/other/authorize`
  • App端如需选择非媒体文件,可在插件市场搜索文件选择,其中Android端可以使用Native.js,无需原生插件,而iOS端需要原生插件。
  • 选择照片大多为了上传,uni ui封装了更完善的uni-file-picker组件,文件选择、上传到uniCloud的免费存储和cdn中,一站式集成。强烈推荐使用。

注:文件的临时路径,在应用本次启动期间可以正常使用,如需持久保存,需在主动调用uni.saveFile ,在应用下次启动时才能访问得到。

success 返回参数说明

参数类型说明tempFilePathsArray图片的本地文件路径列表tempFilesArray、Array图片的本地文件列表,每一项是一个 File 对象

File 对象结构如下

参数类型说明pathString本地文件路径sizeNumber本地文件大小,单位:BnameString包含扩展名的文件名称,仅H5支持typeString文件类型,仅H5支持

示例

uni.chooseImage({
    count: 6,
    sizeType: ['original', 'compressed'],
    sourceType: ['album'],
    success: function (res) {
        console.log(JSON.stringify(res.tempFilePaths));
    }
});

这里给大家说个 大坑

  • chooseImage这个方法的成功回调函数, success 必须使用 ES6 的箭头函数,否则 this的作用域是当前函数,就获取不到data方法中的自己定义的变量。如果不理解的话,请看下面案例展示内容。
  • ES6 箭头函数官方描述对于普通函数来说,内部的this指向函数运行时所在的对象,但是这一点对箭头函数不成立。它没有自己的this对象,内部的this就是定义时上层作用域中的this。也就是说,箭头函数内部的this指向是固定的,相比之下,普通函数的this指向是可变的。

2、案例代码演示

看了官网的案例 我们也来自己动手写一写。

  • 本案例操作描述:默认显示添加封面按钮,点击调用本地图片选择上传一张作为封面使用,可进行切换。(忽略项目中比较丑陋的字体颜色,只做案例展示使用,与本人审美无关(狗头))
  • 参数设置我在代码中都做了详细的解释,没有写的参数使用官网的默认值。
  • 成功的回调函数 success写了一种 ES5 的形式,写了一种 ES6 的形式供大家参考。
  • 封面图片的 src是用了动态赋值的方式(:src="cover")。
<template>
    <view>
        <view class="add-cover" @click="upload">

            <image class="cover" :src="cover" mode="aspectFill">image>
            <view class="default">
                <image src="../../../static/add.png" class="add-icon">image>

                <text>点击{{cover?'切换':'添加'}}封面text>
            view>
        view>
    view>
template>

<script>
    export default {
        data() {
            return {
                cover: ''
            };
        },
        methods: {

            upload() {
                uni.chooseImage({
                    count: 1,
                    sizeType: ['original', 'compressed'],
                    sourceType: ['album'],
                    success: res => {

                        this.cover = res.tempFilePaths[0]
                    }
                });
            }

        }
    }
script>

<style lang="scss">
    .cover {
        width: 100%;
        height: 350rpx;
    }

    .default {
        background-color: #f8f9fc;
        width: 100%;
        height: 350rpx;
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        color: red;
        font-weight: 800;
        position: absolute;
        top: 0;
        background-color: rgba(255, 255, 255, 0.2);
    }

    .add-icon {
        width: 50rpx;
        height: 50rpx;
        margin-bottom: 20rpx;
    }
style>

&#x5728;&#x6B64;&#x8BF4;&#x660E;&#xFF1A;本案例只做了本地上传图片的效果,没有调用接口上传到服务器,实际工作开发中是会有图片上传接口的,官网也提供了对应的将本地资源上传到开发者服务器API:uni.uploadFile(OBJECT),大家可以去参考一下。如有实际开发接口问题可私信博主。

3、效果展示

【uniapp小程序】上传图片

; 🎃专栏分享:

小程序项目实战专栏:《uniapp小程序开发》
前端面试专栏地址: 《面试必看》

⏳ 名言警句:说能做的,做说过的 \textcolor{red} {名言警句:说能做的,做说过的}名言警句:说能做的,做说过的

✨ 原创不易,还希望各位大佬支持一下 \textcolor{blue}{原创不易,还希望各位大佬支持一下}原创不易,还希望各位大佬支持一下

👍 点赞,你的认可是我创作的动力! \textcolor{green}{点赞,你的认可是我创作的动力!}点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向! \textcolor{green}{收藏,你的青睐是我努力的方向!}收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富! \textcolor{green}{评论,你的意见是我进步的财富!}评论,你的意见是我进步的财富!

Original: https://blog.csdn.net/qq_49002903/article/details/128231862
Author: 不苒
Title: 【uniapp小程序】上传图片

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/811670/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 亚马逊云科技——云原生主题容器入门笔记

    嗨,大家好,我是异星球的小怪同志 一个想法有点乱七八糟的小怪 如果觉得对你有帮助,请支持一波。 希望未来可以一起学习交流。 目录 一、容器入门课程 二、容器入门课堂笔记 1.容器背…

    Python 2023年10月9日
    030
  • 使用conda在linux搭建pytorch和tensorflow的GPU运行环境

    Tips: 本文使用的服务器为ubuntu18.04(1080ti x2) 文章目录 步骤总览: 安装显卡驱动 * 第一种:在可视化的界面中可以直接安装系统推荐的驱动 第二种:命令…

    Python 2023年9月8日
    086
  • python数据分析之pandas

    Pandas Series 一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很接近。Series 能保存不同种数据类型,字符串、boolea…

    Python 2023年8月8日
    039
  • pytest配置文件-pytest.ini

    pytest.ini配置文件是pytest框架独有的配置文件,在执行脚本时运行,读取配置文件的信息,改变脚本运行方式。pytest.ini文件一般放在项目的根目录下,不能更改名字,…

    Python 2023年9月13日
    048
  • 高维多元时序数据聚类

    1. 简介 收集数据的能力不断增强,使我们有可能收集大量的异构数据。在可用的异构数据中,时间序列代表着尚未被充分探索的信息母体。当前的数据挖掘技术在分析时间序列时存在多个缺点,尤其…

    Python 2023年10月10日
    048
  • python字典输出到csv_Python将一个字典列表写入csv

    4 个答案: 答案 0 :(得分:3) pandas提供了一种非常直观的方式来考虑迭代字典列表。因为列表中的每个元素都是dict,可以很容易地转换为pandas.DataFrame…

    Python 2023年8月7日
    046
  • pandas之表连接与高级查询

    上期内容:python最最最重要的数据分析工具之pandas 其实上一篇我们已经学习了数据筛选与查询,这里会介绍不一样的高级查询方式;还有一个重要的内容就是表连接。学过数据库的都知…

    Python 2023年8月8日
    041
  • python画散点图

    文章目录 前言 一、散点图函数 二、函数参数介绍 三、代码实例 总结 前言 最近在搞聚类算法,所以难免会用到一些散点图的用法,总结一下,方便以后参考。 一、散点图函数 首先调用一下…

    Python 2023年8月1日
    065
  • JVM学习- – -虚拟机栈详解

    前言:今天学长带领大家走进JVM学习,让我们一起来学习认识虚拟机栈吧~ 目录 1 虚拟机栈概述 虚拟机栈出现的背景 初步印象 内存中的栈和堆 虚拟机栈基本内容 栈的优点 2 栈的存…

    Python 2023年11月8日
    045
  • Diffusion model理论推导

    直观理解Diffusion model 生成式模型本质上是一组概率分布。如下图所示,左边是一个训练数据集,里面所有的数据p d a t a p_{data}p d a t a ​都…

    Python 2023年9月28日
    050
  • Altium Designer 22安装步骤

    Altium Designer 22安装步骤 一、下载地址 百度网盘(有限速):https://pan.baidu.com/s/157mDj1GJFxZFqrgx8zVD6g?pw…

    Python 2023年11月7日
    062
  • HTML5七夕情人节表白网页制作【粉色樱花雨3D相册】HTML+CSS+JavaScript

    这是程序员表白系列中的100款网站表白之一,旨在让任何人都能使用并创建自己的表白网站给心爱的人看。 此波共有100个表白网站,可以任意修改和使用,很多人会希望向心爱的男孩女孩告白,…

    Python 2023年11月8日
    044
  • pytest篇8-pytest之skip/skipif跳过用例

    01 — 引言 上一篇总结了pytest.fixture()中scope参数四种不同纬度的运用,今天我们一起总结一下pytest中用例的跳过。其实前面unittest单元测试框架中…

    Python 2023年9月10日
    061
  • python中分组频率统计功能_Python数据分析之数据聚合与分组

    一、概述 之前我们总结了Pandas的数据加载、清洗及规整,本文主要总结数据聚合与分组,其在我们的数据分析工作中的使用频率也比较高,Pandas为我们提供了gruopby功能,它使…

    Python 2023年8月20日
    042
  • Python Pandas merge 连接 参数 详解 数据合并 数据拼接

    1 SQL基础 1.1 基本概念 结构化查询 语言(Structured Query Language)简称SQL,是一种关系 数据_库查询 _语言,用于存取 数据_以及查询、更新…

    Python 2023年8月7日
    059
  • 应用集成-在Hexo、Hugo博客框架中使用Gitalk基于Github上仓库项目的issue无后端服务评论系统实践

    关注「 WeiyiGeek」公众号 设为「 特别关注」每天带你玩转网络安全运维、应用开发、物联网IOT学习! 希望各位看友【关注、点赞、评论、收藏、投币】,助力每一个梦想。 本章目…

    Python 2023年6月12日
    055
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球