html显示本地图片,html实现图片上传预览

  html显示本地图片,html实现图片上传预览

  问题描述

  假设我们有一个HTML格式的图片上传控件:复制代码如下:

  输入id= upload _ image type= file name= image accept= image/* /

  注意,这个accept=image/* 非常重要。它指定当上传的图像在移动端时,它将与系统的弹出窗口选择类型相关联。一定要补充。

  那么,问题来了,在我们把这个表单提交给服务器之前,有没有办法把图片的内容读出来?

  看似简单,都是客户端文件,应该是可以的,但是之前真的没有什么好办法。但是自从HTML5出现后,这个功能又回来了,通过FileReader就可以轻松实现。

  问题复制代码示例代码如下:

  $(function() {

  $(#upload_image )。变更(功能(事件){

  //根据这个输入获取文件的HTML5 js对象

  var files=event.target.files,file;

  if (files files.length 0) {

  //获取当前上传的文件

  file=files[0];

  //过来看看控制台里这个对象是什么。

  console.log(文件);

  //然后我们可以做一些类似文件大小检查的事情。

  if(file.size 1024 * 1024 * 2) {

  Alert(图像大小不能超过2MB!);

  返回false

  }

  //!

  //这里是key key,通过这个file对象生成一个可用的图片URL

  //获取窗口的URL工具

  var URL=窗口。URL window.webkitURL

  //通过文件生成目标url

  var imgURL=URL . createobjecturl(file);

  //使用此URL生成一个img并显示它

  $(body )。追加($(img/)。attr(src ,imgURL));

  //用下面这句话释放内存中这个url的伺服。运行后,该URL将无效。

  //URL . revokeobjecturl(imgURL);

  }

  });

  });

  简要说明。通过文件的变更事件触发事件,得到事件对象;

  2.通过事件对象获取上传文件的js对象文件;

  3.生成可用的URL从文件对象通过窗口。URL工具;

  4.将此URL投入使用;

  5.*释放伺服简单来说整个操作设计如下几步: 这个网址

  1.对于同一个文件,每次调用URL.createObjectURL,都会重新生成不同的URL

  2.当URL.createObjectURL被调用时,浏览器自动在内存中打开空间为这个URL服务,即使URL请求成功;

  3.如果调用了URL.revokeObjectURL(imgURL );之后会关闭伺服,然后请求的话URL是404;

  4.这一切都是客户端的事情,服务器端对此一无所知,包括你选择的这张图;

  5.这个imgURL看起来是这样的:blob:http://localhost:8000/22cc 97d 5-5e 46-4d 87-9 df4-C3 E8 c 0 a 72 bb

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: