微信JS-SDK上传照片到本地服务器 解析与实例

微信公众号JS-SDK图片上传 微信公众号JS-SDK图片上传功能 阅读详情

先附两张效果图

初始时页面 点击‘加号’,调用JSSDK选择要上传的照片(默认一次最多九张) 点击完成开始上传照片 上传到微信服务器完成 点击第二张图片的删除按钮

实现此实例的思路:

  • 需要调用微信的JSSDK,所以首先要进行微信验证(验证需要的appid、生成签名的随机串、签名等信息需要后台提供)
  • 这里要的功能是可以多选,上传多张照片。而上传照片接口是需要一张一张上传到微信服务器的,所以这里用递归做了一个处理。
  • 最后得到的serverIds图片地址列表是本地图片上传后在微信服务器上的地址列表。如果想要保存到本地服务器,可以把它传给后台,由后台去和微信交互来得到并保存图片。

完整实现代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta content="yes" name="apple-mobile-web-app-capable">
    <meta content="yes" name="apple-touch-fullscreen">
    <meta content="telephone=no,email=no" name="format-detection">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1 minimum-scale=1, user-scalable=no">
    <title>lianlian xixi</title>

    <script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.4/??flexible_css.js,flexible.js"></script>
    <style>
        .red { color: red; }
        .box > p { font-size: 14px; border-bottom: 1px solid #ddd; padding: 0.4rem; }
        .box > .uploadImgBox { padding: 0.266667rem 0.4rem; }
        .box > .uploadImgBox > h1 { border: none; font-weight: bold; padding: 0.1rem 0 0.2rem; }
        .box > .uploadImgBox > p { text-align: center; margin-top: 0.3rem; }
        .box > .uploadImgBox .imgBoxOne,
        .box > .uploadImgBox .imgBox { display: inline-block; width: 2.5rem; height: 2.5rem; line-height: 2.2rem; border: 1px dotted #ddd; margin: 0.2rem; text-align: center; vertical-align: middle; position: relative; }
        .box > .uploadImgBox .imgBoxOne { font-size: 1rem; color: #666; }
        .box > .uploadImgBox .imgBox > img { width: 2.5rem; height: 2.5rem; }
        .box > .uploadImgBox .imgBox > .del { background: #fff; position: absolute; top: -0.25rem; right: -0.25rem; width: 0.5rem; height: 0.5rem; color: #9a9a9a; font-size: 20px; line-height: 0.45rem; border: 1px solid #ddd; border-radius: 0.25rem; }
        .box > .trueInstall { width: 50vw; margin: 0.533333rem auto 0.533333rem 25vw; color: #fff; background: #00CC99; border: none; border-radius: 0.8rem; padding: 0.32rem 1.6rem; font-size: 14px; }
    </style>
</head>

<body>
    <div class="box">
        <p>请上传照片</p>
        <div class="uploadImgBox">
            <h1>上传照片</h1>
            <div class="imgList" id="imgBox">
                <div class="imgBoxOne" id="addImg">+</div>
                <!--<div class="imgBox"><img src="img/error.png" alt=""><span class="del">×</span></div>-->
            </div>
            <p><span class="red">* </span>温馨提示:至少上传一张图,拍正面以及编号。</p>
        </div>
        <button type="button" class="trueInstall" id="trueInstall">确定</button>
    </div>

    <script src="http://libs.baidu.com/jquery/2.1.1/jquery.min.js"></script>
    <script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
    <script>
        var serverIds = [];     //用于存储要上传到本地服务器的照片 在微信服务器上的地址列表
        function delImg(dom){    //选择图片显示后 点击删除按钮删除图片(DOM 和 上面的图片列表)
            serverIds.splice($(dom).parent().prevAll().length-1,1);
            $(dom).parent().remove();
        }

        $(function(){
            $.ajax({        //请求获取微信验证需要的数据
                url:  "/wprovider/wechat/get_signature",
                type: "post",
                dataType: "json",
                data: { "url" : window.location.href },
                success: function (data) {
                    wx.config({        //微信验证
                        //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                        appId: data.data.appId, // 必填,企业号的唯一标识,此处填写企业号corpid
                        timestamp: data.data.timestamp, // 必填,生成签名的时间戳
                        nonceStr: data.data.nonceStr, // 必填,生成签名的随机串
                        signature: data.data.signature,// 必填,签名,见附录1
                        jsApiList: ['chooseImage','uploadImage']  // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
                    });
                }
            });
            $("#addImg").on("click",function(){
                wx.chooseImage({
                    //count: 1, // 默认9
                    //sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
                    //sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
                    success: function(res) {
                        //返回选定照片的本地ID列表
                        var localIds = res.localIds;  //返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
                        var i = 0, length = localIds.length;
                        function upload() {
                            wx.uploadImage({
                                localId: localIds[i],   //需要上传的图片的本地ID,由chooseImage接口获得
                                //isShowProgressTips: 1, // 默认为1,显示进度提示
                                success: function(res) {
                                    //var serverId = res.serverId; // 返回图片的服务器端ID
                                    (i==0) && ($("#imgBox").append($('<div class="imgBox"><img src="'+localIds[0]+'" alt=""><span class="del" onclick="delImg(this)">×</span></div>')));
                                    i++;
                                    serverIds.push(res.serverId);
                                    if (i < length) {
                                        $("#imgBox").append($('<div class="imgBox"><img src="'+localIds[i]+'" alt=""><span class="del" onclick="delImg(this)">×</span></div>'));
                                        upload();   //用递归实现上传多张照片
                                    }
                                },
                                fail: function(res) { /* alert(JSON.stringify(res)); */ }
                            });
                        }
                        upload();
                    }
                });
            });

            $("#trueInstall").on("click",function(){
                //ajax将serverIds传递给后台
                alert(serverIds.length);
            });
        });
    </script>
</body>
</html>
微信JS-SDK选择图片遇到的坑 微信JS-SDK选择图片遇到的坑 有个需求要在微信企业号里面做开发,有个功能是选择图片,使用input标签肯定是不管用了,Android手机上不能多选,所以使用了微信提供的JS-SDK提供的相关API,这个地方真的是有坑,记录一下。按照文档直接引入js文件即可,如果使用的是Vue,也可以使用weixin-js-sdk,两种方式都可以。 图片在Android上无法预览 js-sdk的cho... 阅读详情

相关推荐

微信聊天记录本地导出与备份:WeChatExporter 安全操作指南

数据备份与归档是数字资产管理的基础实践,其核心原理在于将应用内的结构化数据(如数据库、媒体文件)通过特定接口或备份机制提取并转换为通用、可长期保存的格式。在技术实现上,这通常涉及对 SQLite 数据库的解析、文件系统的遍历以及数据格式的转换。这项技术的价值在于赋予用户对自身数据的完全控制权与可移植性,解决了平台锁定和数据孤岛问题,尤其适用于个人数字记忆保存、工作凭证归档等场景。以微信聊天记录为例,其数据存储在 iOS 设备的本地备份中,通过解析备份文件并利用 Node.js 等工具链,可以将包含文本、图片

weixin_34341117的博客 413

H5使用微信JSSDK的wx.chooseImage进行多文件上传

h5使用微信sdk解决在微信浏览器内核不能多图片上传的方法

javascript和jq设置金额整数与小数点后面的字体大小 6464

Unity AR图片上传至服务器并生成微信可扫码链接全流程解析

文件上传是网络应用开发中的基础功能,其核心原理是通过HTTP协议将客户端数据以特定格式(如multipart/form-data)传输至服务端。在跨平台应用场景中,这一技术实现了数据在不同终端间的流转与共享,具有重要的工程实践价值。本文以Unity3D与FastAPI技术栈为例,深入解析了从客户端图片处理、服务端接收存储到生成移动端适配页面的完整链路。针对AR/VR、展览导览等应用场景,重点探讨了如何将Unity中的3D内容轻量化分享至微信生态,涉及对象存储集成、微信浏览器适配及二维码生成等关键技术要点,为

weixin_34174422的博客 459

H5项目中使用微信JS-SDK(以H5项目批量上传图片为例,兼容IOS及安卓)

H5项目中使用微信JS-SDK(以H5项目批量上传图片为例,兼容IOS及安卓)

前端小白成长记 7071

vue 使用微信jssdk,调用微信相册上传图片功能

vue 使用微信jssdk 1、引入weixin-js-sdk npm install weixin-js-sdk 使用文档 https://www.npmjs.com/package/weixin-js-sdk 2、配置 vue中微信jssdk配置 import wx from 'weixin-js-sdk' created(){ //微信jssdk配置 let timestamp=new Date().getTime();//时间戳 let noncestr=Math.random().toString(36).substr(2);//随机字符串 let url = htt

weui框架实现上传、预览和删除图片功能代码

weui框架暂时只有css文件,并没有js文件实现其功能,我在其html+css后面增加了js实现其功能,为大家提供方便,也为自己保存记录。具体实例代码大家参考下本

微信-jssdk多图上传

多媒体上传接口进行上传,后台调用微信的地址是从接口调试工具中的多媒体下载地址拿到的,相关微信前端文档仅提了一句。原生h5在微信端唤起选择图片后无法进行多选,因此需借用jssdk中的uploadImage进行多图选择。这里如果是在本地调试,上传到微信服务器返回的serverid是假的,可以使用接口调试工具中的。

I can @ me 571

从C-EPS到DP-EPS:手把手图解不同EPS类型怎么选,对你的车操控感影响有多大?

方向盘转动时那股细腻的阻尼感,高速过弯时令人安心的沉稳,或是狭窄车位里一根手指就能拨动的轻盈——这些看似微妙的差异,其实都源自转向系统电机那几厘米的安装位置变化。当我们谈论驾驶乐趣时,发动机参数和悬架调校总是占据C位,但真正连接驾驶者与车辆的神经末梢,恰恰是那套默默工作的电动助力转向系统(EPS)。不同EPS类型带来的操控特性差异,可能比马力数字更能定义一辆车的性格。

weixin_30920513的博客 531

利用微信jssdk上传图片,并保存到本地

项目需求: 项目一开始使用第三方cdn,七牛服务器上传图片,但是因为项目设计到很多身份证,营业执照等照片的上传,怕上传到这些cdn上面,消息泄露,所以将上传到第三方,改为上传到本地,七牛上传在之前的文章中有提到过,这里就不细说了,那么,接下了,我给大家讲一下laravel上传图片到本地的代码实现吧。 首先你需要了解plupload.js的相关知识: define(['jquery', 'pl

qq_14855277的博客 8582

低代码Agent开发框架使用指南(二)—Coze平台核心功能概览

本篇分享系统介绍了字节跳动推出的低代码智能体开发平台Coze。Coze以免费易用、多模型支持和便捷的跨平台发布为核心优势,显著降低了智能体开发门槛。文章详细解析了平台的六大核心功能:扩展能力边界的插件系统、增强认知的知识库、结构化数据管理的数据库、可视化图像处理的图像流、实现复杂逻辑编排的工作流,以及处理复杂任务的多智能体协作机制,全面展现了Coze平台的强大能力。

weixin_42782643的博客 1358

tanner2019安装教程

tanner2019安装教程 tanner安装包 软件由老师提供,但由于老师给的方法不知怎么回事无法使用就自己找了一些方法,本教程仅提供参考 链接:https://pan.baidu.com/s/1A2O6JuEF8YFbe8bPnD3J6w 提取码:ysif 复制这段内容后打开百度网盘手机App,操作更方便哦 安装过程 1.选择TannerTools_v2019.2-Win64.exe,进行安装。 2.选择安装产品 3.选择目标路径 4.确认安装 5.安装成功,退出。 获取许可过程 1.打开key压缩

weixin_47730560的博客 1万+

微信JS-SDK选择相册或拍照并上传PHP实现

理解:微信上传接口是拍照,或者选择本地照片,上传到微信的服务器,获取到一个id,通过token与这个id获取到图片,保存到服务器即可。 效果   通过微信js接口,调用底层程序。 需要引入js文件,并进行配置。 &lt;script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"&gt;&lt;/script&gt; ...

wangmj518的专栏 551

告别黑窗口:XShell+X11转发图形化界面的5分钟保姆级教程(附Xming配置)

本文详细介绍了如何使用XShell和X11转发技术快速实现Linux图形化界面的远程访问。通过5分钟快速配置指南,包括服务端设置、客户端工具选择及XShell+Xming的完美配置,帮助用户高效运行GUI应用程序,提升远程工作效率。特别适合需要图形化操作的开发者和运维人员。

weixin_29223603的博客 328

微信公众号-上传图片顺便转base64

拍照或从手机相册中选图接口,这个接口会返回图片的本地ID是上传图片或获取base64图的关键。值得注意的地方是在调取wx.getLocalImgData接口时,其返回的图片路径,安卓手机上会默认不带`data:image/jpeg;base64,`头部,所以在掉你后台接口时可能会报错,导致不能上传;而IOS则是返回的头部是一个不常见的格式jgp,为了兼容手机能够识别该图片需要将jgp替换为jpeg...

weixin_30367169的博客 526

STM32实战开发(65):STM32摄像头图像采集开发教程

我们将会详细介绍如何使用STM32进行摄像头控制、图像数据采集以及如何将采集到的图像数据传输到其他设备进行处理。通过这篇博客,您将能够掌握STM32与摄像头模块的图像采集技术,应用于各种图像处理场景。为了确保STM32能够正确接收图像数据,我们需要配置STM32的GPIO引脚,并通过外部中断捕获这些信号。为了实现更高效的图像采集,可以通过DMA进行数据传输,将图像数据直接从GPIO引脚存储到内存中。通过DMA传输,我们可以将采集到的图像数据直接存储在内存中的一个缓冲区,然后进行后续的图像处理。

2201_76125393的博客 2539

借助AI搞定国社科“研究内容”部分!用Gemini 3 Pro轻松撰写6大模块,让基金本子效率质量更上一层楼

所谓研究整体框架,是对课题研究逻辑结构与技术路径的系统阐述,其核心在于通过研究目标分解、研究内容模块化与研究方法整合,构建一个层次清晰、逻辑严密、科学可行的研究体系。撰写要求:1)分要点、分层次列出主要研究内容,保持各部分之间的逻辑性、层次性与系统性;研究可行性可理解为开展本课题在理论基础、研究方法、研究条件、人员结构、平台支撑及外部协作等方面的可实施程度,可从内部条件与外部条件两个维度进行系统论证。研究背景为:我正在申报xxx年xxx(项目名称),课题名称为:xxx,拟采用的主要研究方法包括:xxx等;

智能AI让学术科研更容易 964

官方教程:教你用好微信JS-SDK接口

微信开放JS-SDK接口,开发者和行业用户可谓是欢欣鼓舞、奔走相告,目测将激起一大波第三方开发商的创新产品!真真是H5开发者的利好!但也有用户表示,还不了解JS-SDK接口到底是啥,究竟怎么用。现在,小编就通过大量实战案例为大家逐一讲解,争取让大家都会用、且用好JS-SDK接口,赶紧往下看吧!     1、分享类接口:支持获取“分享到朋友圈”、“发送给朋友”、“分享到QQ”和“分享到微博

BOTOAI 1926

UG\NX二次开发 获取对象的层、颜色、隐藏状态、线宽、线型、高亮显示状态

获取对象的层、颜色、隐藏状态、线宽、线型、高亮显示状态。

王牌飞行员_里海的博客 1982

微信上传图片到七牛

HTML代码: <body> <div class="screen"> <div class="layout_content_full background-color_dividing"> <div class="background-color_white preview_title_box"> &...

217

YOLO26优化:FPN涨点&轻量化篇 |多级特征融合金字塔(HS-FPN),助力小目标检测

高层筛选特征金字塔网络(HS-FPN),能够刷选出大小目标,增强模型表达不同尺度特征的能力,助力小目标检测

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 331

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

微信jssdk实现人脸拍照的代码和出现错误解决

jssdk官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 微信测试公众号申请:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 微信测试公众号配置: 前端代码: 需要导入js,具体步骤,注释都在文档...

weixin_42005527的博客 1324

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

微信JSSDK上传多图预览,点击查看大图

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no"> ...

weixin_30615767的博客 177

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: 理解与使用Javascript回调函数
下一篇: 腾讯地图的使用,添加多个标记和点击事件
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值