当前位置: 首页 > article >正文

图片上传实现图片预览的功能

文章目录

  • 图片上传实现图片预览的功能
    • 一、引言
    • 二、拖拽上传实现预览
      • 1、HTML结构与样式
      • 2、JavaScript实现拖拽逻辑
    • 三、选择文件上传实现预览
      • 1、HTML结构
      • 2、JavaScript实现预览逻辑
    • 四、使用示例
    • 五、总结

图片上传实现图片预览的功能

在这里插入图片描述

一、引言

在现代网页设计中,图片预览功能是提升用户体验的重要元素之一。它允许用户在上传图片之前就能看到图片的效果,从而减少不必要的上传操作,提高效率。本文将介绍如何实现图片上传后的即时预览功能,包括拖拽上传和选择文件上传两种方式。

二、拖拽上传实现预览

1、HTML结构与样式

首先,我们需要创建一个拖拽区域,并为其设置一些基本的样式,以便用户能够清楚地看到拖拽区域。

HTML复制

<div id="drag"><img src="#" alt="拖拽图片到此预览"></img></div>
<style>
#drag {
    border:1px dashed gray;
    border-radius:5px;
    box-sizing:border-box;
    padding: 1em;
}
#drag img {
    border:1px dashed red;
}
</style>

2、JavaScript实现拖拽逻辑

接下来,我们需要通过JavaScript来处理拖拽事件,实现图片的预览功能。

JavaScript复制

<script>
let $ = document.getElementById('drag')
$.ondragenter = e => { e.target.style.borderWidth = '3px' },
$.ondragover = e => { e.preventDefault() },
$.ondragleave = e => { e.target.style.borderWidth = '1px' },
$.ondrop = e => {
    e.preventDefault()
    let div = e.target
    div.style.borderWidth = '1px'
    for (let item of e.dataTransfer.items) {
        let f = item.getAsFile()

        let r = new FileReader()
        r.onload = e => {
            div.querySelector('img').src = e.target.result
        }
        r.readAsDataURL(f)
        break
    }
}
</script>

三、选择文件上传实现预览

1、HTML结构

为了实现选择文件上传的预览功能,我们需要一个文件输入框和一个按钮来触发文件选择。

HTML复制

<button onclick="document.getElementById('img-s').click()">选择并预览图片</button>
<input hidden id="img-s" type="file"
    onchange="preview()"
    accept="image/png,image/jpeg,image/gif,image/webp">
<img src="#" alt="尚未选择预览图片"></img>

2、JavaScript实现预览逻辑

通过FileReader对象的readAsDataURL()方法,我们可以将选中的文件转换为DataURL,然后将其设置为图片的src属性,从而实现预览。

JavaScript复制

<script>
function preview(e) {
    let f = document.getElementById('img-s').files[0]
    let r = new FileReader()
    r.onload = e => {
        document.querySelector('img').src = e.target.result
    }
    r.readAsDataURL(f)
}
</script>

四、使用示例

  • 拖拽上传:用户可以将图片拖拽到指定的区域,松开鼠标后图片会立即显示在该区域中。
  • 选择文件上传:用户点击按钮选择本地图片,选择后图片会立即显示在页面上。

五、总结

通过上述方法,我们可以轻松实现图片上传后的即时预览功能。拖拽上传和选择文件上传两种方式各有优势,可以根据实际需求选择合适的方式。希望本文对你有所帮助。


版权声明:本博客内容为原创,转载请保留原文链接及作者信息。

参考文章

  • 手工打造全功能图片上传组件

http://www.kler.cn/a/525085.html

相关文章:

  • 计算机网络 IP 网络层 2 (重置版)
  • 春晚舞台上的人形机器人:科技与文化的奇妙融合
  • “AI视频智能分析系统:让每一帧视频都充满智慧
  • Time Constant | RC、RL 和 RLC 电路中的时间常数
  • QT+mysql+python 效果:
  • C# 与.NET 日志变革:JSON 让程序“开口说清话”
  • 浏览器同源策略:从“源”到安全限制的全面解析
  • 【力扣每日一题】存在重复元素 II 解题思路
  • C ++ 1
  • SpringCloudGateWay和Sentinel结合做黑白名单来源控制
  • 计算机的错误计算(二百二十五)
  • gesp(C++六级)(6)洛谷:P10109:[GESP202312 六级] 工作沟通
  • C++ ——— 仿函数
  • 【2024年华为OD机试】(B卷,100分)- 模拟消息队列 (JavaScriptJava PythonC/C++)
  • FreeRTOS从入门到精通 第十三章(信号量)
  • Linux 信号驱动IO
  • 基于Springboot的健身房管理系统【附源码】
  • es6中关于let的使用以及案例,包括但不限于块级作用域,不允许重复声明,没有变量提升,暂存性死区,不与顶层对象挂钩
  • [SUCTF 2018]MultiSQL1
  • 微博热搜时光机逆向(js逆向)
  • 【力扣系列题目】最后一块石头的重量 分割回文串 验证回文串 等差数列划分{最大堆 背包 动态规划}
  • SSM总结
  • SpringBoot项目创建
  • 10.6.4 Json文件操作
  • RocketMQ原理—4.消息读写的性能优化
  • 高速PCB设计指南2——PCB设计的信号完整性