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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 面向新手的Web服务器搭建(一)——IIS的搭建[通俗易懂]

    面向新手的Web服务器搭建(一)——IIS的搭建[通俗易懂]很多童鞋说自己是做移动开发的,想挂个简单的WebAPI,可是服务器又不会搭,这样一来测试就成了问题。看看网上的教程,发现略难懂,而且大多是一个转一个,没价值,所以干脆写几篇文章讲讲简单的Web服务器怎么搭,让不太涉及Web的童鞋快速上手。

    2022年5月8日
    89
  • DQN简介

    DQN简介DQN 可以视为 Q learning 的进阶版 DQN 与 Q learning 十分相似 DQN 解决了 Q learning 解决不了的问题 DQN 解决的问题 Q learning 的核心在于 Q 表格 通过建立 Q 表格来为行动提供指引 但这适用于状态和动作空间是离散且维数不高时 当状态和动作空间是高维连续时 Q 表格将变得十分巨大 对于维护 Q 表格和查找都是不现实的 设想一下如果 AlphaGo 使用 Q learning 将会是什么样的场景 围棋的可能性量级为 10 170 如此巨大的 Q 表格已经丧失了的它的价值 Q 表格无法解决 人们开

    2025年11月1日
    3
  • 机器学习名词解释(train & valid & test)(accuracy & precision & recall)

    机器学习名词解释(train & valid & test)(accuracy & precision & recall)train valid ortest 机器学习最明显的一个特点是需要大量的数据 特别对监督学习来说 就是需要大量的带标签数据 labeleddata 很多入门的朋友很快就会遇见模型训练和测试这两个阶段 进而也就了解到带标签数据是要被划分成两个部分的 训练集 trainingset 与测试集 testset 这两个概念也很直观 大部分朋友非常快就能接受 可

    2025年9月2日
    3
  • 本地测试读取redis和普通文件缓存的速度,redis慢一倍?

    本地测试读取redis和普通文件缓存的速度,redis慢一倍?

    2021年10月16日
    47
  • ETL开发流程小记(1)[通俗易懂]

    ETL开发流程小记(1)[通俗易懂][原创]ETL开发流程随笔ETL开发ETL工作目标ETL工作目的主要有:ETL工作流程准备工作ETL设计ETL开发ETL测试功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章U…

    2022年5月1日
    131
  • Eureka工作原理

    Eureka工作原理上节内容为大家介绍了,注册中心Eureka产品的使用,以及如何利用Eureka搭建单台和集群的注册中心。这节课我们来继续学习Eureka,了解它的相关概念、工作流程机制等。Eureka作为SpringCloud体系中最核心、默认的注册中心组件,研究它的运行机制,有助于我们在工作中更好地使用它。Eureka核心概念回到上节的服务注册调用示意图,服务提…

    2022年4月5日
    38

发表回复

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

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