chrome浏览器对HTML5支持的较好,使用HTML5的File相关的api,可以实现前台页面在选定图片后,不上传即可预览。代码如下:

1、前台代码,使用<input type="file">标签进行文件的选择,其 accept 属性用于过滤文件类型,此处选择几种图片格式的文件。

 <div class="row">
<label for="fileToUpload">请选择一个文件:</label>
<br>
<input type="file" name="fileToUpload" id="fileToUpload" accept="image/gif,image/jpeg,image/x-png,image/tiff,image/x-ms-bmp" />
</div>

2、绑定点击选择文件之后的函数:

 $('#fileToUpload').change(function() {
var div = document.createElement('div');
var img = document.createElement('img');//创建 img 对象 window.URL = window.URL || window.webkitURL;
var imgFile=document.getElementById('fileToUpload');
if(window.URL){
//File API
img.src = window.URL.createObjectURL(imgFile.files[0]); //创建一个object URL,并不是你的本地路径 img.onload = function(e) {
window.URL.revokeObjectURL(this.src); //图片加载后,释放object URL
} }
div.appendChild(img);
}

上述代码先创建了一个 div 元素,然后又创建了一个 img ,并将 img 的 src 属性设置为所选文件(注意是一个 object URL,如果直接使用类似 “file:///c:/a.jpg” 的格式是不行的),然后将 img 添加到 div 中。

以上仅为示例代码。

通过 js 来绑定 img 的 src ,也可以使用另外一种方式:

 $('#fileToUpload').change(function() {
var div = document.createElement('div');
var img = document.createElement('img');//创建 img 对象 var imgFile=document.getElementById('fileToUpload');
var reader = new FileReader();
reader.readAsDataURL(imgFile.files[0]);
reader.onload = function(e){
img.src = e.target.result;
};
div.appendChild(img);
}

即使用 FileReader 的 readAsDataURL 方法,为 img 设置其 src.

值得注意的是,第二种方法所读取的 reader.result 可以用于方法或消息的发送,比如在 chrome 的一个 tab 中,通过 chrome.tabs.sendMessage 方法发送出去,在另一个 tab 中通过 chrome.extension.onMessage.addListener(function(msg)) 接收,接收到的 msg 中的相关数据,依然可以用于所在 tab 中的一个 img 元素的 src 设定,而第一种方法貌似不可以,需要的同学可以注意一下!

chrome浏览器使用HTML5预览图片的更多相关文章

  1. HTML5预览图片、异步上传文件

    注意啦:本文的代码都是以JQuery为示例,jq_开头的变量都是jq对象. 在HTML5中,我们可以在图片上传之前对图片进行预览,就像下面这么做 jq_upload_file.change(funct ...

  2. hTML5实现表单内的上传文件框,上传前预览图片,针刷新预览images

    hTML5实现表单内的上传文件框,上传前预览图片,针刷新预览images, 本例子主要是使用HTML5 的File API,建立一個可存取到该file的url, 一个空的img标签,ID为img0,把 ...

  3. Html5选择图片并及时预览图片

    以往想要实现图片预览基本都是先传至服务器后等返回链接地址才能进行预览,使用Html5选择图片并及时预览图片的代码如下,使用起来更爽了. <!DOCTYPE html> <html l ...

  4. 本地预览图片html和js例子

    本地预览图片html和js例子,直接上代码吧. <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" ...

  5. [.ashx檔?泛型处理例程?]基础入门#2....FileUpload上传前,预览图片(两种作法--ashx与JavaScript)

    原文出處  http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/20/ashx_beginner_02_fileupload_picture_p ...

  6. 使用readAsDataURL方法预览图片

    使用FileReader接口的readAsDataURL方法实现图片的预览. 在FileReader出现之前,前端的图片预览是这样实现的:把本地图片上传到服务器,服务器把图片地址返回,并把它替换到图片 ...

  7. Thinkphp5+plupload图片上传功能,支持实时预览图片。

    今天和大家分享一个国外的图片上传插件,这个插件支持分片上传大文件.其中著名的七牛云平台的jssdk就使用了puupload插件,可见这个插件还是相当牛叉的. 这个插件不仅仅支持图片上传,还支持大多数文 ...

  8. 异步上传&预览图片-不压缩图片

    本例使用ajaxFileUpload异步上传预览图片 <bean id="multipartResolver" class="org.springframework ...

  9. [js/jquery]移动端手势拖动,放大,缩小预览图片

    摘要 有这样的需求需要在手机端预览图片的时候,实现图片的手势拖动,放大缩小功能.最终通过touch.js这个插件实现了效果. touch.js Touch.js是移动设备上的手势识别与事件库, 由百度 ...

随机推荐

  1. python 常用 time, datetime处理

    python 中 time 有三种格式: float, struct tuple(time.struct_time 或 datetime.datetime), str 常用的: float --> ...

  2. Qt ------ 判断运行在何种系统下

    #ifdef Q_OS_WIN // Windows上的代码 #endif #ifdef Q_OS_LINUX // Linux上的代码 #endif #ifdef Q_OS_MAC // Mac上的 ...

  3. 「Django」rest_framework学习系列-渲染器

    渲染器:作用于页面,JSONRenderer只是JSON格式,BrowsableAPIRenderer有页面,.AdminRenderer页面以admin形式呈现(需要在请求地址后缀添加?fromat ...

  4. 报Cannot find /usr/local/tomcat/bin/setclasspath.sh错误

    错误如下: [root@RSP-DEVWEB03 bin]#sh startup.sh Cannot find /usr/local/tomcat8081/bin/setclasspath.sh Th ...

  5. Thinkphp关联模型使用

    1.需求描述 首页文章列表,需要同时获取文章的点赞和被关注数,同时如果被当前用户点赞或关注了会显示相应小图标进行区别.图示如下: 2.解决方案 数据库设计: 文章对应Article表,其中包括收藏数字 ...

  6. extjs 省市县级联

    Ext.define('State', { extend: 'Ext.data.Model', fields: [ {type: 'string', name: 'nevalue'}, {type: ...

  7. [USACO14JAN]Recording the Moolympics

    题目描述 Being a fan of all cold-weather sports (especially those involving cows), Farmer John wants to ...

  8. 分治法:快速排序求第K极值

    标题其实就是nth_element函数的底层实现 nth_element(first, nth, last, compare) 求[first, last]这个区间中第n大小的元素 如果参数加入了co ...

  9. 【POJ】2774 Long Long Message

    [题意]给定两个字符串S和T,求最长公共子串.len<=10^5. [算法]后缀自动机 [题解]对字符串S建SAM,然后令串T在S上跑匹配. 这是自动机最原本的功能——匹配,就是串T在SAM(S ...

  10. js面向对象的几种常见写法

    下面是一个简单的js对象:定义Circle类,拥有成员变量r,常量PI和计算面积的成员函数area(),常用为第一种和第三种. 1.工厂方式 var Circle = function() { var ...