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

yizhihongxing

下面是详细讲解“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日

相关文章

  • html5笛卡尔心形曲线的实现

    实现一个笛卡尔心形曲线,可以使用HTML5 canvas绘制,代码实现如下: HTML代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>HTML5笛卡尔心形曲线的实现</title> <…

    JavaScript 2023年5月28日
    00
  • 详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法

    标题:详谈jQuery操纵DOM元素属性attr()和removeAttr()方法 介绍: jQuery是一种非常流行的JavaScript库,它能够让开发者更加便捷地操作DOM元素。其中操纵DOM元素属性的attr()和removeAttr()方法是常用的方法之一,本文将为大家详细介绍这两种方法。 一、attr()方法 attr()方法可以用来获取和设置元…

    JavaScript 2023年6月10日
    00
  • 介绍一下js垃圾回收机制

    JavaScript中的垃圾回收机制负责自动管理内存,回收不再使用的对象所占用的内存空间。在JavaScript中,开发者不需要显式地分配和释放内存,垃圾回收器会自动完成这些操作。以下是关于JavaScript垃圾回收机制的一些关键概念: 内存生命周期:JavaScript内存生命周期包括分配、使用和释放三个阶段。首先,内存会被分配给变量或对象;然后,程序会…

    JavaScript 2023年4月17日
    00
  • js中关于Blob对象的介绍与使用

    什么是 Blob 对象 Blob 对象是 JavaScript 中的一个标准对象,它代表了一段二进制数据。通常我们会用它来存储二进制文件,比如图片、视频、音频等等。 在 JavaScript 中,我们可以使用 Blob 构造函数来创建一个 Blob 对象。它接受一个数组作为参数,数组元素可以是字符串、 ArrayBuffer 对象(用于表示二进制数据) 或 …

    JavaScript 2023年5月27日
    00
  • 微信小程序表单验证form提交错误提示效果

    下面将详细讲解“微信小程序表单验证form提交错误提示效果”的完整攻略。 什么是微信小程序表单验证 表单验证是网站开发中的重要一环,目的是为了让用户在填写表单时能够及时的发现并纠正错误,保证数据的准确性。同样,微信小程序中也需要进行表单验证。 微信小程序表单验证的原理与网站表单验证类似,即使用户在填写表单时有错误输入,也应该及时给予提示,防止用户在数据提交时…

    JavaScript 2023年6月10日
    00
  • 一个写得较好的JavaScript日期挑选控件

    当我们需要在网站中使用日期选择控件时,一个好的JavaScript日期挑选控件可以极大地帮助我们提高开发效率和用户体验。在使用JavaScript日期控件之前,我们需要考虑以下几个因素: 控件的易用性 控件的可定制性 控件的兼容性 在选择JavaScript日期控制器之前,需要仔细考虑以上因素,以确定控件的选择是否适合我们的需求。 以下是一个基于jQuery…

    JavaScript 2023年6月10日
    00
  • JavaScript Array.flat()函数用法解析

    JavaScript Array.flat()函数用法解析 Array.flat()是JavaScript中一个新的数组API,用于将嵌套数组“展平”,即从多维数组变成一维数组。本文将详细讲解Array.flat()函数的用法。 语法 let newArray = arr.flat(depth) arr:被展平的原数组。 depth(可选):表示展平的深度,…

    JavaScript 2023年5月27日
    00
  • javascript+mapbar实现地图定位

    我们来详细讲解一下“JavaScript+Mapbar实现地图定位”的攻略。 1. 前置准备 首先,我们需要在页面中引入 mapbar.js ,该脚本文件提供了Mapbar地图API的相关方法和属性。 <script src="http://api.mapbar.com/api/map2.js?v=2.4"></scri…

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