h5 实现图片上传 案例

h5 实现图片上传 案例如何在 h5 中实现图片上传 单图片上传 先写一个按钮 通过点击按钮触发文件上传的 onclick 事件 divclass btn onclick takePhone 请点击进行拍照 inputtype file name file id upload capture camera onchange uploadImg accept image value inputtype file name file id upload capture camera onchange uploadImg accept image divclass btn onclick takePhone

如何在h5 中实现图片上传 ?

单图片上传

  • 先写一个按钮 ,通过点击按钮触发文件上传的onclick 事件
 <div class="btn" onclick="takePhone()">请点击进行拍照</div> <input type="file" name="file" id="upload" capture="camera" onchange="uploadImg()" accept="image/*" value="" hidden=""/> 
  • 注:设置 capture="camera" ,意为只可进行拍照,不可从相册选取图片上传
  • 别的参数自行进行查阅
 // 拍照 function takePhone() { 
    $("#upload").click(); // 调用图片上传 } //上传文件 function uploadImg() { 
    var fd = new FormData(); var file = $("#upload").get(0).files[0]; fd.append("file", file); $.ajax({ 
    url: "xxx/upload", // 填写你的url地址 type: "post", data: fd, processData: false, // 因为data值是FormData对象,不需要对数据做处理 contentType: false, // 告诉jQuery不要去设置Content-Type请求头 cache: false, // 上传文件不需要缓存 success: function (res) { 
    console.log(res); // 图片上传返回的结果  } }); } 

多图片上传实现效果如下:

在这里插入图片描述

  • html 基本布局
<ul class="file-list "></ul> <div class="upload"> <img src="./images/upload.png" class="add choose" id="choose"/> </div> <input type="file" name="" id="choose-file" multiple="multiple" style="opacity: 0"/> 
  • 如何实现
$(function(){ 
    $('.choose').click(function () { 
    $('#choose-file').click(); }) //---------图片上传-------------// //声明变量 var $button = $('#upload'),//选择文件按钮 $file = $("#choose-file"),//回显的列表 $list = $('.file-list'),//选择要上传的所有文件 fileList = []; //当前选择上传的文件 var curFile; // 选择按钮change事件,实例化fileReader,调它的readAsDataURL并把原生File对象传给它, // 监听它的onload事件,load完读取的结果就在它的result属性里了。它是一个base64格式的,可直接赋值给一个img的src. $file.on('change', function (e) { 
    $("#loading").show(); //上传过图片后再次上传时限值数量 var numold = $('li').length; if (numold >= 6) { 
    alert('最多上传6张图片'); return; } //限制单次批量上传的数量 var num = e.target.files.length; var numall = numold + num; if (num > 1) { 
    alert('最多上传1张图片'); return; } else if (numall > 10) { 
    alert('最多上传10张图片'); return; } //原生的文件对象,相当于$file.get(0).files;//files[0]为第一张图片的信息; curFile = this.files; curFile = $file.get(0).files; var file = $file.get(0).files[0]; var filename = file.name; // 将文件名赋值 //将FileList对象变成数组 fileList = fileList.concat(Array.from(curFile)); // 图片上传 var formData = new FormData(); formData.append("file", file); upload(formData, filename); // 自己的图片上传方法,由于最后会用到文件名,将其传递 for (var i = 0, len = curFile.length; i < len; i++) { 
    reviewFile(curFile[i]) ; // 图片回显 } $('.file-list').fadeIn(2500); }) //点击删除按钮事件: $(".file-list").on('click', '.file-del', function () { 
    let $parent = $(this).parent(); console.log($parent); let index = $parent.index(); fileList.splice(index, 1); // 删除附件 deleteFj(uploadFileFlag[index]); uploadFileFlag.splice(index, 1); $parent.fadeOut(850, function () { 
    $parent.remove() }); var filess = document.getElementById('choose-file'); filess.value = ''; }); ) 

图片在页面回显的方法

 function reviewFile(file) { 
    //实例化fileReader, var fd = new FileReader(); //获取当前选择文件的类型 var fileType = file.type; //调它的readAsDataURL并把原生File对象传给它, fd.readAsDataURL(file);//base64 //监听它的onload事件,load完读取的结果就在它的result属性里了 fd.onload = function () { 
    if (/^image\/[jpeg|png|jpg|gif]/.test(fileType)) { 
    $list.append('<li class="file-item"><img src="' + this.result + '" alt="" height="70"><span class="file-del"><i class="iconfont ">&#xe636;</i></span></li>').children(':last').hide().fadeIn(2500); } else { 
    $list.append('<li class="file-item"><span class="file-name">' + file.name + '</span><span class="file-del"><i class="iconfont ">&#xe636;</i></span></li>') } } } 

图片上传方法

function upload(fd, filename) { 
    $.ajax({ 
    url: "xxx /upload", // 填写你的url地址 type: "post", data: fd, processData: false, // 因为data值是FormData对象,不需要对数据做处理 contentType: false, // 告诉jQuery不要去设置Content-Type请求头 cache: false, // 上传文件不需要缓存 success: function (res) { 
    console.log(res); } }); } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233737.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • HC32F460开发之rtthread+finsh组件的移植

    HC32F460开发之rtthread+finsh组件的移植文章目录前言一、RT-Thread简介二、rtthread的移植1.裸机例程2.RT-Thread下载2.RT-Thread移植总结前言对于从事单片机的开发人员,操作系统可以说是绕不过的一个必修课程。在稍复杂的应用开发中,一个好的操作系统可以帮助我们将单片机的资源最大化的利用起来,而系统提供的各种API接口也可以可靠地帮我们实现各种应用逻辑功能。日常生活里,在各种各样的电子设备中,操作系统被广泛地应用,常见的有Linux,ucos,以及现在在各种物联网设备中被广泛应用的freertos,RT-Thre

    2022年5月11日
    86
  • TTL与RS-232电平转换芯片MAX232/MAX3232「建议收藏」

    TTL与RS-232电平转换芯片MAX232/MAX3232「建议收藏」TTL电平标准:输出L:2.4V             输入L:2.0V RS-232标准:逻辑1的电平为-3~-15V,逻辑0的电平为+3~+15V    MAX232供电电压只能是5V的,也就是说对于3.3V的系统,最好采用宽电压的MAX3232,电压范围3V~5V,而管脚是兼容的,只是电容的选取有所不同。 电容的选取如下:

    2022年8月10日
    11
  • Pytest(15)pytest分布式执行用例「建议收藏」

    Pytest(15)pytest分布式执行用例「建议收藏」前言平常我们功能测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟,如果单个测试人员执行需要1000分钟才能跑完当项目非常紧急时,会需要协调多个测试资源来把任务分成两部分,于是执行时间

    2022年7月28日
    51
  • idea修改文字大小_为什么idea设置不了字体大小

    idea修改文字大小_为什么idea设置不了字体大小idea设置修改字体大小与样式详细步骤【备注】:不同idea版本设置方法类似,找到对应的面板设置即可第一步:点击工具栏最上方的File选项第二步:选择Setting选项第三步:选择Appearance选项,选择size设置自己喜欢的大小即可,我设置为14第四步:选择Editor选项中的font面板,同样找到size,设置对应的大小,即可设置代码主窗口的字体大小ide…

    2022年8月29日
    4
  • pycharm推荐配色和字体_pycharm主题配色方案

    pycharm推荐配色和字体_pycharm主题配色方案pycharm的默认主题和字体什么的真是不敢恭维,尤其是在用惯了vscode的onedarkpro主题后,再看pycharm真是觉得有点。。。在网上找了许久,找到一款类似onedarkpro的主题,同时还下载了彩色括号的插件,换上类似vscode的字体,pycharm顿时顺眼多了。度云自取:https://pan.baidu.com/s/1Ia6oryWUXV3TKT0wjzbAc…

    2022年8月25日
    6
  • CGLIB中BeanCopier源码实现

    CGLIB中BeanCopier源码实现转载:CGLIB中BeanCopier源码实现CGLIB代码包结构1.core2.beans3.reflect4.proxyBeanCopier实现机制1.BeanCopier的使用2.性能分析3.一次调用流程(1)CGLIB做了什么(2)从BeanCopier#create开始(3)KEY_FACTORY的由来(4)AbstractClassGene…

    2025年9月13日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号