HTML5实现拖拽读取图片文件(将电脑中图片拖入浏览器并显示)

下面样例演示上传图片预览功能。图片的选择,除了可以使用文件上传控件选择图片,也可以直接把图片拖放到虚线框中。

 

1,实现原理

(1)为了处理放置文件的操作,需要处理三个事件:ondragenter、ondragover和ondrop。

(2)处理图片用的是 readAsDataURL() 方法,其得到的数据URL是一种用长字符串表示图片的方式。为了在网页中显示图片,可以将 <img> 元素的src属性设置为图片URL,也可也将CSS的 background-image 属性设置为图片URL(本例采用此方式)

(3)这里将显示图片的<div>的 background-size 设为100%,为了缩小图片以全部显示。并将 background-repeat 设为 no-repeat,不让图片重复显示。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Read Image</title>
  <style>
    #dropBox {
      margin: 15px;
      width: 250px;
      height: 250px;
      border: 5px dashed gray;
      border-radius: 8px;
      background: lightyellow;
      background-size: 100%;
      background-repeat: no-repeat;
      text-align: center;
    }
      
    #dropBox div {
      margin: 75px 45px;
      color: orange;
      font-size: 25px;
      font-family: Verdana, Arial, sans-serif;
    }
 
    input {
      margin: 15px;
    }
  </style>
 
  <script>
    var dropBox;
 
    window.onload = function() {
      dropBox = document.getElementById("dropBox");
      dropBox.ondragenter = ignoreDrag;
      dropBox.ondragover = ignoreDrag;
      dropBox.ondrop = drop;
    }
 
    function ignoreDrag(e) {
      //因为我们在处理拖放,所以应该确保没有其他元素会取得这个事件
      e.stopPropagation();
      e.preventDefault();
    }
 
    function drop(e) {
      //取消事件传播及默认行为
      e.stopPropagation();
      e.preventDefault();
      
      //取得拖进来的文件
      var data = e.dataTransfer;
      var files = data.files;
      //将其传给真正的处理文件的函数
      processFiles(files);
    }
 
    function processFiles(files) {
      var file = files[0];
      var output = document.getElementById("fileOutput");
      //创建FileReader
      var reader = new FileReader();
      //告诉它在准备好数据之后做什么
      reader.onload = function (e) {
        //使用图像URL来绘制dropBox的背景
        dropBox.style.backgroundImage = "url('" + e.target.result + "')";
      };
      //读取图片
      reader.readAsDataURL(file);
    }
 
    function showFileInput() {
      var fileInput = document.getElementById("fileInput");
      fileInput.click();
    }
  </script>
</head>
 
<body>
    <div id="dropBox">
      <div>将图片拖放到此处...</div>
    </div>
    <input id="fileInput" type="file" onchange="processFiles(this.files)">
    <img id="thumbnail">
</body>
</html>

时间: 2024-10-14 02:54:21

HTML5实现拖拽读取图片文件(将电脑中图片拖入浏览器并显示)的相关文章

PHP file_put_contents()实现批量下载图片文件和css中图片代码

 代码如下 复制代码 set_time_limit(0);//设置PHP超时时间 $imagesURLArray = array_unique($imagesURLArray );   foreach($imagesURLArray as $imagesURL) {     echo $imagesURL;     echo "<br/>";     file_put_contents(basename($imagesURL), file_get_contents($ima

Js+php实现异步拖拽上传文件_javascript技巧

异步拖拽上传文件--小实例 upload.html <!DOCTYPE html> <!-- To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates and open the template in the editor. --> <html> <head&g

Word中直接拖拽表格和文件的几个小技巧

计算机办公应用中,我们经常在页面中直接进行拖拽,非常方便.下面我把拖拽边距.表格.文件的几个小技巧介绍给大家. 1.轻松拖拽边距我们平时都是通过在"文件"菜单项中选择"页面设置"来设置页边距.实际上为了灵活地与页面内容相结合,直接拖拽更直观.比如:你若要在八开纸的页面中做几个居中大字,左右居中只需用格式栏中的居中按钮就可以,但要上下居中,就不是很方便了(如图1),若再打一回车,字就跑到下一页,或者会跑到页面下边距处.假如用"文件→页面设置→页边距"

Js+php实现异步拖拽上传文件

         本文给大家分享的是使用php结合js实现异步拖拽上传文件的代码,及示例,有需要的小伙伴可以参考下.              异步拖拽上传文件--小实例 upload.html ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53

代码-已实现js拖拽一张图片,怎么实现多图片拖拽就出错?

问题描述 已实现js拖拽一张图片,怎么实现多图片拖拽就出错? <!doctype html> drag //会出错 var dragImg = document.getElementById("dragImg"); startDrag(dragImg); var Img = document.getElementById("Img"); startDrag(Img);//会出错 js的startDrag函数代码如下 var params = { left

uri-Android中如何读入文件夹中的图片文件并得到该图片的名称

问题描述 Android中如何读入文件夹中的图片文件并得到该图片的名称 补充内容,我按照下面的方式读取了一张图片,能不能得到这个图片的名字?比如图片的名字为"XD0001.jpg",如何得到"XD0001"这个字符串? 我现在有一个程序,是从相册选择一张图片后裁剪,保存然后才能进入后面的处理,我现在想把裁剪功能去掉,并想实现读取文件夹中的所有图片,并能一张张的进行处理,我该怎么改? 现在的代码是: 这个是onActivityResult需要改的部分代码 protec

Android 可拖拽的GridView效果实现, 长按可拖拽和item实时交换

转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17718579),请尊重他人的辛勤劳动成果,谢谢! 在Android开发中,我们常常用到ListView和GridView,而有的时候系统的ListView,GridView并不能满足我们的需求,所以我们需要自己定义一个ListView或者GridView,我的上一篇文章中就是自定义的一个左右滑动删除item的例子,大家有兴趣的可以去看看 Android 使

如何让Win8系统照片应用显示电脑中图片

  我们点击Win8开始屏幕中的"照片"应用磁贴,Win8照片应用界面下方一般会有多个图片分类,比如常见的图片库.Skydrive.设备等,有的还会显示Facabook与Flick等.如果我们的Win8图片库中没有包含图片,也没有用微软账户登录,则所有的图片分类都没有图片显示(如下左图),点击分类进去也看不到图片.已经做了图片库包含和登录Skydrive的用户则可以在分类中看到滚动显示的图片(如下右图). 其实这三个图片分类分别对应Win8设备的图片库.Skydrive以及外接设备(如

让Win8系统照片应用显示电脑中图片

有些刚开始使用Win8的朋友也许会纳闷,为什么有些Win8设备上的照片磁贴会滚动显示不同的照片,有的却不显示;明明电脑里有很多照片,点击磁贴进入Win8照片应用之后却什么图片也看不到--这是怎么回事呢?别着急,下面我们详细说明. 我们点击Win8开始屏幕中的"照片"应用磁贴,Win8照片应用界面下方一般会有多个图片分类,比如常见的图片库.Skydrive.设备等,有的还会显示Facabook与Flick等.如果我们的Win8图片库中没有包含图片,也没有用微软账户登录,则所有的图片分类都

图片管理-ssh开发中图片部署到二级域名是怎么做的

问题描述 ssh开发中图片部署到二级域名是怎么做的 我们现在做一个电商网站,网站的图片非常多我想做一个类似于img.abc.com的二级域名来对应一个目录存储我的图片,不知道怎样做求大神指点 解决方案 在服务器配置img.abc.com 域名指向对应的图片存储的根目录不就可以了?