input file上传 图片预览功能实例代码

下面是详细讲解“input file上传图片预览功能实例代码”的完整攻略。

输入文件上传图片预览功能实例代码

简介

在web开发中,上传图片是一个很常用的功能。而预览上传图片则是一个更加友好的交互体验。在本文中,我们将演示如何使用HTML、CSS、JavaScript实现一个上传图片并预览的功能。

HTML部分

首先,我们需要在HTML中添加一个文件选择框和一个图片预览框。HTML代码如下:

<input type="file" multiple onchange="previewImages()">
<div id="preview"></div>

其中,文件选择框使用input标签,type属性为file。onchange属性指定了一个JavaScript函数,这个函数在文件选择框中选择文件后触发。预览框使用了一个div标签,id属性为preview。

JS部分

在JS部分,我们需要编写一个预览图片的函数。这个函数将接收一个参数,即文件选择框中选中的文件对象。函数会将文件对象转换为一个URL,然后将其添加为一个img标签的src属性。JS代码如下:

function previewImages() {
  var preview = document.getElementById("preview");
  // 获取文件选择框中选中的所有文件
  var fileArr = document.getElementById("upload").files;
  // 遍历文件数组
  for (var i = 0; i < fileArr.length; i++) {
    var reader = new FileReader();
    // 将文件读取为Data URL
    reader.readAsDataURL(fileArr[i]);
    // 当文件读取完成时触发
    reader.onload = function (e) {
      var img = document.createElement("img");
      img.src = e.target.result;
      preview.appendChild(img);
    }
  }
}

在函数中,我们首先获取到预览框的DOM对象,并获取输入文件框选中的文件数组。然后遍历文件数组,使用FileReader对象读取文件的Data URL。当读取完成时,将Data URL转换成img标签的src,最后将img标签添加到预览框中。

CSS部分

在CSS部分,我们需要为预览框添加一些样式,以使其显示更加美观。CSS代码如下:

#preview {
  display: flex;
  flex-wrap: wrap;
}

#preview img {
  width: 150px;
  height: 150px;
  object-fit: cover;
  margin: 10px;
}

以上CSS代码中,我们使用了flex布局,使图片能够自动换行。每张图片使用了一个宽高为150px的正方形框并使用了object-fit: cover将图片填满框体,使其显示效果更加美观。

示例说明

下面提供两个示例代码,分别为使用jQuery和Vue.js实现上传图片预览功能。

示例1:使用jQuery实现

HTML部分

<input type="file" multiple id="upload">
<div id="preview"></div>

JS部分

$("#upload").on("change", function() {
  var preview = $("#preview");
  $.each(this.files, function() {
    var reader = new FileReader();
    var file = this;
    reader.onload = function(e) {
      $("<img>").attr({
        "src": e.target.result,
        "title": file.name
      }).appendTo(preview);
    }
    reader.readAsDataURL(file);
  });
});

在示例1中,我们使用了jQuery的选择器和each方法,来遍历文件数组,并且使用jQuery的方式向DOM中添加img元素实现预览图片功能。

示例2:使用Vue.js实现

HTML部分

<div id="app">
  <input type="file" multiple v-on:change="previewImages">
  <div id="preview">
    <img v-for="(img, index) in images" v-bind:key="index" v-bind:src="img">
  </div>
</div>

Javascript部分

new Vue({
  el: '#app',
  data: {
    images: [],
  },
  methods: {
    previewImages: function(e) {
      var files = e.target.files || e.dataTransfer.files;
      if (!files.length) return;
      var vm = this;
      for (var i = 0; i < files.length; i++) {
        var reader = new FileReader();
        reader.onload = function(e) {
          vm.images.push(e.target.result);
        };
        reader.readAsDataURL(files[i]);
      }
    }
  },
});

在示例2中,我们使用Vue.js提供的v-on指令来监听文件选择框的change事件。在previewImages方法中,我们使用了Vue.js提供的数据绑定功能,将选择的图片文件转换为Data URL,并存储在images数组中。最终,使用了Vue指令v-for来遍历images数组,动态生成预览图片的img标签。

至此,我们已经实现了使用原生HTML、CSS和JavaScript以及jQuery、Vue.js框架实现上传图片预览功能的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:input file上传 图片预览功能实例代码 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • js中bool值的转换及“&&”、“||”、 “!!”详解

    bool是布尔类型,只有两种取值:true和false。在JavaScript中,存在一些将非布尔值转换为布尔值的规则,这些规则叫做隐式类型转换。而“&&”、“||”、 “!!”都是实现js中布尔值转换的常用操作符。 “&&”操作符 当使用“&&”操作符时,如果两个值都是true,则返回true;否则返回fal…

    JavaScript 2023年5月28日
    00
  • vue3中router路由以及vuex的store使用解析

    Vue3是当前前端领域最流行的框架之一,它提供了一些重要的功能模块,如路由、状态管理等,允许我们轻松构建复杂的单页应用程序。在本篇文章中,我们将详细阐述Vue 3中Router路由以及Vuex的Store使用解析,从而帮助您快速掌握这些关键功能。 Router路由 安装和使用Router 首先让我们来介绍Vue 3中的Router路由,这是一个非常重要的功能…

    JavaScript 2023年6月11日
    00
  • JavaScript 中断请求几种方案详解

    JavaScript 中断请求几种方案详解 在Web开发中,我们经常需要发送Ajax请求来获取数据或向后端发送请求,但有时候我们需要中断请求。这篇文章将会详细介绍JavaScript中断请求的几种方案。 方案一:使用XMLHttpRequest的abort()方法 XMLHttpRequest(以下简称XHR)是一个Web API接口,用于发送HTTP请求和…

    JavaScript 2023年6月11日
    00
  • js判断是否为数组的函数: isArray()

    要判断一个变量是否为数组,我们可以使用JavaScript中的isArray()函数。以下是关于该函数的详细攻略: 语法 Array.isArray(obj) 参数 obj:必需。 检测该对象是否是数组。 返回值 如果 obj 是数组返回 true,否则返回 false。 示例一 const arr = [1, 2, 3]; console.log(Arra…

    JavaScript 2023年5月27日
    00
  • JavaScript动态创建div等元素实例讲解

    针对“JavaScript动态创建div等元素实例讲解”的完整攻略,我给出以下内容: 1. 动态创建元素 在 JavaScript 中,我们可以使用 document.createElement() 方法来动态创建元素。其语法格式如下: var element = document.createElement(tagName); 其中,tagName 表示要…

    JavaScript 2023年6月10日
    00
  • BootstrapValidator实现注册校验和登录错误提示效果

    BootstrapValidator是一款基于Bootstrap开发的表单验证插件。它提供了完整的客户端表单校验功能,包括表单提交前校验、实时校验等。通过BootstrapValidator,我们可以轻松实现注册校验和登录错误提示效果。下面将为大家介绍具体的实现方法。 步骤一:引入必要的文件和插件 首先,在HTML中引入BootstrapValidator插…

    JavaScript 2023年5月27日
    00
  • JS正则表达式一条龙讲解(从原理和语法到JS正则)

    “JS正则表达式一条龙讲解(从原理和语法到JS正则)”是一篇全面讲述JavaScript正则表达式的文章。下面将从几个方面介绍该文章的内容: 文章结构 该文章主要分为以下几个部分: 正则表达式概述 该部分简单介绍了正则表达式的定义、应用场景和组成部分。 正则表达式语法 该部分详细讲解了正则表达式语法中的各个符号和正则表达式的组合方式。其中涉及到元字符、字符类…

    JavaScript 2023年6月10日
    00
  • 非常震撼的纯CSS3人物行走动画

    下面我会详细讲解如何制作一份“非常震撼的纯CSS3人物行走动画”的完整攻略。 准备工作 在开始之前,你需要准备好以下内容: 明确定位要制作的人物,包括人物的外形尺寸和行走的姿势; 一份基础的 HTML 文件,用于展示人物行走动画; 一份基础的 CSS 文件,用于定义人物的样式和动画效果。 制作过程 第一步:定义人物的基础样式 我们需要在 CSS 中定义人物的…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部