预览、选择、上传图片,微信都有提供接口,这里记录一下这三个接口在我这里的用处。
1、预览图片:这个比较简单,找到图片一张一张预览就好了,直接上代码吧。
var picList = []; //循环要预览的图片 $('.photoList>li>img').each(function(index, element) { var picUrl = $(this).attr("src");//获取图片路径 //添加图片预览事件 picList[index] = picUrl; $(this).click(function(){ wx.previewImage({ current: picUrl, // 当前显示的图片链接 urls: picList // 需要预览的图片链接列表 }); }) });
2、选择图片:这个也比较简单,微信的帮助文档说的也很清楚。也直接上代码吧。
/** *该方法用来选择文件 */ function selectWXFile(){ var imgStr="",IDs=""; //文件上传 wx.chooseImage({ count: 9, // 默认9 sizeType:['original'], // 可以指定是原图还是压缩图,默认二者都有 sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有 success: function (res) { IDs = res.localIds;//返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片 if (IDs.length == 0) { $.Dialog.fail("请先使用 chooseImage 接口选择图片"); return; } //进行文件上传 syncUpload(0,IDs.length,IDs); } }); }
注意点:获取到的localIds必须转成String,也就是必须localIds=localIds.toString()再将localIds作为img的src属性才能显示出图片。
3、上传图片:这个有点麻烦,前提条件是在上传多张图片的情况下。因为微信规定的就是每次只能传一张,要想传多张就得一张一张上传。
容易想到的思路就是:文件选择完毕之后在回调函数的success方法中添加循环,循环一张本地ID,上传一张。这个方法在安卓系统中可以实现多张,但是在苹果里只能上传1张,也就是无论选择多少张最后上传到微信服务器的只有1张。我这里采用的是递归的方法,也就是我传完一张在页面显示一张,然后再调用文件上传的办法。(所以在上面的选择文件方法的末尾有上传文件的方法)。
/** * 该方法用来上传文件 * @param start:本地ID开始的下标(当前上传的图片的下标) * @param end:本地ID的总个数(也就是选择的图片的总个数) * @param IDs:当前批次选择的所有图片在本地ID的集合 * */ function syncUpload(start,end,IDs){ start = parseInt(start,10); end = parseInt(end,10); //alert("start="+start+"\nend="+end); if(start<end){ var localId = IDs[start].toString(); //alert("本地ID:"+localId); wx.uploadImage({ localId: localId, isShowProgressTips: 1,//显示进度条 success: function (res) { var serverId = res.serverId; // 返回图片的服务器端ID serverId = serverId.toString(); //alert("获取到serverID:"+serverId); //将选定的图片信息显示到页面 var divRanId = parseInt((new Date().getTime())/10,10); divRanId="add_"+divRanId; var imgStr="<div id='"+divRanId+"' class='add_file_upload' sign='2'>"+ "<input type='hidden' name='fileServerId' value='"+serverId+"' />" + "<img src='"+localId+"' width='85%' height='76%' class='imgClass' onclick='deletePhoto(this);'/>" + "<div class='righ'><img src='images/right.png'/></div>" + "<form class='box-css'>" + "<a class='reduce' href='javascript:void(0);' onclick='reduce(this);'><img src='images/cart_btn_reduce.png'/></a>" + "<input style='font-size: 9pt;width:40px;padding:0px; text-align:center; float:left; display:inline-block; height:21px; border-radius:0px;margin:2px 5px; line-height:21px; border:1px solid #828282;color:#828282' type='text' onchange='qty(this);' value='1' size='2' name='fileCount' />" + "<a class='adds' href='javascript:void(0);' onclick='addPhotoNum(this);'><img src='images/cart_btn_add.png'/></a>" + "</form></div>"; jQuery("#photoDiv").append(imgStr);//上传成功,添加图片信息 //显示已经上传的图片数量 var uploadNum = jQuery("#uploadNum").text(); if(isempty(uploadNum))uploadNum=0; uploadNum = parseInt(uploadNum,10); uploadNum = uploadNum+1; jQuery("#uploadNum").text(uploadNum);//添加数量 start++; //延迟1s,这1s用来显示图片信息,避免出现连续上传几次最后一次性显示图片的问题 setTimeout(function(){ syncUpload(start,end,IDs); },1000); } }); } };
注意点:
1、传递过来的localId最好也toString()一下,避免上传失败。
2、将选择的图片信息添加到页面的代码最好写在文件上传的方法里,要是单独提出来作为一个方法在这里调用,会出现“文件连续上传几次但是页面不显示图片到最后文件上传的差不多了图片一次性全部加载出来”的问题,同时也可以达到“上传一张显示一张且可以告知文件是否上传成功及上传数量”的效果,后面加的延迟操作也是出于这个考虑。
相关推荐
拍照、本地选图,图片预览,上传图片,下载图片,获取当前网络状态,查看地理位置,获取当前地理位置打开地图,关键是使用JsSignUtil获取了access_token,jsapi_ticket,signature,JSP页面才可以通过JS调用微信的...
- 技术要点:图片文件存储、图片预览、权限控制等。 4. **图片收藏管理** - 功能:用户可以收藏喜欢的图片。 - 技术要点:记录收藏记录、展示个人收藏列表。 5. **图片留言管理** - 功能:用户可以在图片下方...
当用户选择图片并点击上传按钮后,JavaScript会将图片文件作为FormData对象发送到后端,并在成功上传后更新预览图片的`src`属性,从而实现图片的预览。 总结,通过Spring Boot实现图片上传和回显,主要包括以下步骤...
在本文中,我们将深入探讨如何在JavaScript中实现附件预览功能,该功能将帮助用户在不下载文件的情况下直接预览图片等类型附件。文章主要分为四个部分来阐述实现这一功能的详细步骤和方法。 ### 一、实现附件预览的...
语言 | JDK1.8, JS, HTML 数据库 | mysql5.6 缓存NOSQL | redis 项目构建|Maven 运行环境|阿里云Centos7 ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目...
Servlet 实现文件上传、预览、下载、删除功能 Servlet 是 Java 语言中用于开发基于 Web 的应用程序的一种技术,主要用于处理 HTTP 请求和响应。下面将详细介绍如何使用 Servlet 实现文件上传、预览、下载、删除功能...
Java 实现多图片上传功能 Java 实现多图片上传功能是指通过 Java 语言来实现上传多个图片的功能,该功能在实际应用中非常广泛,例如在电子商务网站、社交媒体平台、图片分享平台等方面都有应用。 在实现多图片上传...
使用springboot开发的在线云盘项目,用户可以上传视频,音乐,文档,图片等媒体文件,其中视频和音乐可以在线预览(MP4视频格式可以在线预览,但是没mp4的视频格式,例如avi格式,要使用ie浏览器预览) 此项目还...
- **附件预览与上传**:支持文档和图片的上传及预览功能。 - **使用上行模板**:定制化的模板应用,提高开发效率。 - **处理参数中的特殊字符**:确保数据传输的安全性和准确性。 - **在模板中实现缓存数据**:提高...
图片预览插件 图片滚动显示插件 1.1.9 jquery实现鼠标在按钮上显示窗口,离开窗口和按钮时消失 1.1.10 rabbitMQ集成 视频截图 图片缩略图旋转 集成Mybatis 使用数据库连接池druid dubbo使用 1.1.11 集成Spring Cache,...
通过浏览器访问应用,输入数据或上传文件,触发二维码批量打印功能。确保打印机已连接并且设置正确,观察打印结果是否符合预期。 在实际项目中,你可能还需要考虑其他因素,如错误处理、用户界面设计、性能优化等。...
在Vue.js框架中实现指定区域截图的功能,通常是为了在Web应用中提供用户自定义截取屏幕部分并保存或分享的能力。Vue项目中的这种需求可以通过引入第三方库和组件来完成。以下是一个详细的步骤和知识点概述: 1. **...
实现附件的预览和上传功能,方便用户管理和分享文件。 **5.3 如何使用上行模板?** 说明如何利用上行模板来优化数据上传流程,提高应用效率。 **5.4 如何处理参数中的特殊字符?** 讨论如何正确处理URL参数中的...
这个框架是在学习Spring的时候,为了积累学习成果,自己搭建的...图片预览插件 图片滚动显示插件 1.1.9 jquery实现鼠标在按钮上显示窗口,离开窗口和按钮时消失 导入Eclipse中 直接执行Jetty类的main方法就可以启动服务
1.0.5 ...图片预览插件 图片滚动显示插件 1.1.9 jquery实现鼠标在按钮上显示窗口,离开窗口和按钮时消失 1.1.10 rabbitMQ集成 视频截图 图片缩略图旋转 集成Mybatis 使用数据库连接池druid dubbo使用
图片预览插件 图片滚动显示插件 1.1.9 jquery实现鼠标在按钮上显示窗口,离开窗口和按钮时消失 1.1.10 rabbitMQ集成 视频截图 图片缩略图旋转 集成Mybatis 使用数据库连接池druid dubbo使用 1.1.11 集成Spring Cache,...
图片预览插件 图片滚动显示插件 1.1.9 jquery实现鼠标在按钮上显示窗口,离开窗口和按钮时消失 1.1.10 rabbitMQ集成 视频截图 图片缩略图旋转 集成Mybatis 使用数据库连接池druid dubbo使用 1.1.11 集成Spring Cache,...
【1】项目代码完整且功能都验证ok,确保稳定可靠运行后才上传。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。 【2】项目主要针对各个计算机相关专业,包括计科、信息安全、数据科学与...
本系统还**封装了文件管理功能**,在其他模块如若要实现图片/文件上传预览时,前端只需导入现成的 Vue 组件即可实现(使用 viewerjs 依赖实现),后端只需定义 String 类型的实体类变量即可,无需再去研究文件上传...
1. 实现附件预览和上传功能。 ##### 5.3 如何使用上行模板? 上行模板是指用户可以通过移动应用发送给服务器的数据模板。 1. 学习如何使用上行模板来优化数据传输过程。 ##### 5.4 如何处理参数中的特殊字符? ...