微信小程序实现图片上传功能的思路与源码

 更新时间:2022年11月12日 15:22:32   作者:水星记_  
我们日常开发中经常需要用到图片上传功能,这篇文章主要给大家介绍了关于微信小程序实现图片上传功能的思路与源码的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

前言

手机上传图片的功能大家一定都用过吧,今天教你用微信小程序实现这个小功能。

实现效果如下:

实现思路:

首先我们需要定义一个存放图片的数组,通过方法拿取图片的详细信息,然后调用微信小程序的 wx.uploadFile 方法将拿到的图片信息添加到定义好的图片数组中即可;删除图片我们只需要拿到存放图片的数组再通过splice方法删除。

wx.uploadFile(Object object)方法的参数:

属性类型必填项说明
urlstring开发者服务器地址
filePathstring要上传文件资源的路径 (本地路径)
namestring文件对应的 key,开发者在服务端可以通过这个 key 获取文件的二进制内容
headerObjectHTTP 请求 Header,Header 中不能设置 Referer
formDataObjectHTTP 请求中其他额外的 form data
timeoutfunction超时时间,单位为毫秒
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)

源码文件

wxml文件

<view class="imgBox">
    <view><text>车辆照片</text></view>
    <view class="imgContant">
        <van-uploader accept="image" max-count="1" bind:after-read="afterRead" bind:delete="deleteClick" file-list="{{ fileList }}" />
    </view>
</view>

js文件

//获取应用实例
var app = getApp();
Page({
    data: {
        fileList: [], //图片存放的数组
    },
    // 删除照片
    deleteClick(event) {
        var imgData = this.data.fileList;
        // 通过splice方法删除图片
        imgData.splice(event.detail.index, 1);
        // 更新图片数组
        this.setData({
            fileList: imgData
        })
    },
    // 车辆照片
    afterRead(event) {
        // loading加载
        wx.showLoading({
            title: '上传中...'
        });
        const {file} = event.detail;//获取图片详细信息
        let that = this;//防止this指向问题
        // 设置请求头,根据项目需求变换
        let Authorization = wx.getStorageSync('key')
        let headers = {
            'content-type': '',
            'client_id': 'webApp',
            'client_secret': '123456',
        }
        if (Authorization) {
            headers.Authorization = 'Bearer ' + Authorization
        }
        // 调用wx.uploadFile上传图片方法
        wx.uploadFile({
            url: "http://192.168.0.11:8888/api-xian/api-zjmj/zjmj/hmcl/uploadFile",
            method: 'POST',
            header: headers,
            filePath: file.url,
            name: 'file',
            formData: {
                user: 'test'
            },
            // 成功回调
            success(res) {
                // JSON.parse()方法是将JSON格式字符串转换为js对象
                var result = JSON.parse(res.data);
                // 上传完成需要更新 fileList
                const {fileList = []} = that.data;
                // 将图片信息添加到fileList数字中
                fileList.push({
                    ...file,
                    url: result.data
                });
                // 更新存放图片的数组
                that.setData({
                    fileList
                });
                wx.hideLoading();//停止loading
            },
        });
    },
})

wxss文件

page {
    background: #EFF4FF;
}

.imgBox {
    font-size: 28rpx;
    margin: 3%;
    background: white;
    padding: 30rpx;
    border-radius: 30rpx;
    display: flex;
    align-items: center;
}

.imgContant {
    margin-left: 40rpx;
}

至此,这个小功能就实现啦!

总结

到此这篇关于微信小程序实现图片上传功能的文章就介绍到这了,更多相关微信小程序图片上传内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • javascript生成随机大小写字母的方法

    javascript生成随机大小写字母的方法

    这篇文章主要介绍了javascript生成随机大小写字母的方法,需要的朋友可以参考下
    2014-02-02
  • 用JS提交参数创建form表单在FireFox中遇到的问题

    用JS提交参数创建form表单在FireFox中遇到的问题

    在一个前端页面上,需要通过JavaScript来提交参数,使用JS创建form表单,将参数append到表单中进行提交,接下来将介绍如何操作与实现
    2013-01-01
  • 详解嵌套命名空间在TypeScript中如何应用

    详解嵌套命名空间在TypeScript中如何应用

    命名空间是TypeScript中非常有用的概念,可以帮助我们组织和管理代码,避免命名冲突,下面小编就来和大家聊聊嵌套命名空间在TypeScript中是如何应用的吧
    2023-06-06
  • js使用formData实现批量上传

    js使用formData实现批量上传

    这篇文章主要为大家详细介绍了js使用formData实现批量上传,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • JavaScript函数、方法、对象代码

    JavaScript函数、方法、对象代码

    函数定义可以嵌套在其他函数中,常用作子函数。但不能出现在循环或条件语句中。
    2008-10-10
  • JS实现颜色梯度与渐变效果完整实例

    JS实现颜色梯度与渐变效果完整实例

    这篇文章主要介绍了JS实现颜色梯度与渐变效果,结合完整实例形式分析了js颜色渐变所涉及的数学运算与页面样式动态操作相关技巧,需要的朋友可以参考下
    2016-12-12
  • chrome原生方法之数组

    chrome原生方法之数组

    由于各浏览器的js实现不同,因此各浏览器的原生对象(这里不涉及DOM实现,当然这也有区别)的原生方法也不尽相同,采用原生方法的好处显而易见,使用兼有效率,而且其中有些方法可能包含在以后的ECMAscript规范中
    2011-11-11
  • 浅析Bootstrap缩略图组件与警示框组件

    浅析Bootstrap缩略图组件与警示框组件

    缩略图在网站中最常用的就是产品列表页面,一行显示几张图片,有的在图片底下带有标题、描述内容、按钮等信息。本文给大家介绍Bootstrap缩略图组件与警示框组件,感兴趣的朋友一起学习吧
    2016-04-04
  • JS交换变量的方法

    JS交换变量的方法

    这篇文章主要介绍了JS交换变量的方法,实例分析了javascript通过自定义函数实现变量交换的使用技巧,需要的朋友可以参考下
    2015-01-01
  • JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别

    JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别

    这篇文章主要介绍了JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别,非常不错,需要的朋友可以参考下
    2016-08-08

最新评论