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


相关推荐

  • 各位学弟学妹,别再看教材了,时间复杂度看这篇就好了[通俗易懂]

    各位学弟学妹,别再看教材了,时间复杂度看这篇就好了[通俗易懂]时间复杂度是学习算法的基石,今天我们来聊聊为什么要引入时间复杂度,什么是时间复杂度以及如何去算一个算法的时间复杂度一、刻画算法的运行时间某日,慧能叫来了一尘打算给他补习补习一下基础知识,只见克写了一段非常简单的代码一尘看老师有点生气,开始虚心请教了为了方便讨论,这里我们把每一条语句的执行时间都看做是一样的,记为一个时间单元①蓝色框的两条语句,花费两个时间单元②黑色框的一条语句,花费n+1个时间单元③红色框的两条语句,花费2*n个时间单元这不是.

    2022年5月15日
    33
  • 语义分割步骤_实时语义分割

    语义分割步骤_实时语义分割 深度学习发展到现在,各路大神都发展出了各种模型,这里就做个伸手党吧。在深度学习实现过程中最重要的最花时间的我觉得应该是数据预处理与后处理,会极大影响最后效果,至于模型,感觉像是拼乐高积木,一个模块一个模块地叠加,拼成最适合自己的模型。1数据预处理1.1图像切割 一般而言,训练集会是一整张大图,所以需要自己切割成小图训练,可以做切割,也可以在训练时划窗读取,最好先做切割,可以检查数据。切…

    2022年8月21日
    6
  • File类、递归

    File类、递归

    2021年5月19日
    106
  • Linux基本操作命令 实验

    Linux基本操作命令 实验一、实验目的:1. 熟悉Linux基本命令。2. 熟悉Linux操作系统。二、实验环境:一台装有Linux的机器。三、实验内容:1.文件操作命令的使用。用vi编辑器新建一个testl文件输入thisistestl~!查看文件与目录ls进入Linux系统,输入ls-m按回车键执行。 一、实验目的:1. 熟悉Linux基本命令。2. 熟悉Linux操作系统。 二、实验环境:一台装有Linux的机器…

    2022年9月29日
    1
  • python语言中的多行注释符是_Pyhton 单行、多行注释符号使用方法及规范「建议收藏」

    python语言中的多行注释符是_Pyhton 单行、多行注释符号使用方法及规范「建议收藏」python中的注释有多种,有单行注释,多行注释,批量注释,中文注释也是常用的。python注释也有自己的规范,在文章中会介绍到。注释可以起到一个备注的作用,团队合作的时候,个人编写的代码经常会被多人调用,为了让别人能更容易理解代码的通途,使用注释是非常有效的。# 在学习python的朋友们,强烈推荐加入PythonQQ群。一、python单行注释符号(#)井号(#)常被用作单行注释符号,在代码…

    2025年5月24日
    0
  • Anti SQL Inject

    Anti SQL Inject

    2021年7月31日
    49

发表回复

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

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