【小月博客】 Html5 上传图片 移动端、PC端通用

在博客园注册账号有些天了,感觉有些许欣慰,自己写的东西有人在看,有人在评论很是开心。(ps: 满足一下虚荣心吧!)

废话不多说了,说一下今天给大家分享的是 html5上传图片。我们是在移动端使用的,但是这个在pc上也通用兼容性我只在谷歌测试过。之前一直用的angular写的《用HTML5的File API做上传图片预览能》。今天摒弃angular的东西分享一个html5 + js 图片上传案例。那么今天还是按照一定的步骤来讲吧。

HTML 上传图片

HTML

第一步创建html,我们在页面中放置一个文件选择的input#upload(PS:偷懒一下,这里就不再次写案例了直接复制的我们的页面)

<div class="con4">
     <span class="btn upload">上传<input type="file" class="upload_pic" id="upload" /></span>
 </div>

CSS

注:css 写的有些乱哈,看不懂的可以问我,或者直接自己写一下就ok。

.con4{
     width: 80%;
     height: auto;
     overflow: hidden;
     margin: 15% auto 0 auto;
     color: #FFFFFF;
}
.con4 .btn{
     width: 45%;
     height: 40px;
     line-height: 40px;
     text-align: center;
     background: #d8b49c;
     display: block;
     font-size: 16px;
     border-radius: 5px;
}
.upload{
     float: left;
     position: relative;
}
.upload_pic{
     display: block;
     width: 100%;
     height: 40px;
     position: absolute;
     left: 0;
     top: 0;
     opacity: 0;
     border-radius: 5px;
}

Javascript

通过getElementById获取节点,判断浏览器的兼容性,对于不支持FileReader接口的浏览器将给出一个提示并禁用input,否则监听input的change事件。

//获取上传按钮
var input1 = document.getElementById("upload"); 

if(typeof FileReader===‘undefined‘){
     //result.innerHTML = "抱歉,你的浏览器不支持 FileReader";
     input1.setAttribute(‘disabled‘,‘disabled‘);
}else{
     input1.addEventListener(‘change‘,readFile,false);
}

然后,当file_input的change事件触发时,调用函数readFile()。在readFile中,我们首先获取file对象,然后通过file的type属性来检测文件类型,我们当然只允许选择图像类型的文件,然后我们new一个FileReader实例,并调用readAsDataURL方法来读取选中的图像文件,最后在onload事件中,获取到成功读取的文件内容,并以插入一个img节点的方式显示选中的图片。

function readFile(){
     var file = this.files[0];
     if(!/image\/\w+/.test(file.type)){
         alert("文件必须为图片!");
         return false;
     }
     var reader = new FileReader();
     reader.readAsDataURL(file);
     //当文件读取成功便可以调取上传的接口,想传哪里传哪里(PS: 你们可以把你们的靓照偷偷发给我!)
     reader.onload = function(e){
         var data = this.result.split(‘,‘);
         var tp = (file.type == ‘image/png‘)? ‘png‘: ‘jpg‘;
         var a = data[1];
         //需要上传到服务器的在这里可以进行ajax请求
         ... ...
     }
};

写到这里我们已经完成了图片上传的功能了,大家有兴趣的自己动手尝试一下,不懂的地方或者我写错的地方一定要找我哦。

FileReader的方法和事件

参数/事件 描述
方法
abort 中断读取
readAsText(file, [encoding]) 将文件读取为文本
该方法有两个参数,其中第二个参数是文本的编码方式,默认值为 UTF-8。这个方法非常容易理解,将文件以文本方式读取,读取的结果即是这个文本文件中的内容。
readAsBinaryString(file) 将文件读取二进制码
通常我们将它传送到后端,后端可以通过这段字符串存储文件
readAsDataURL(file) 将文件读取为DataURL
将文件读取为一串Data URL字符串,将小文件以一种特殊格式的URL地址直接读入页面。小文件指图像与html等格式的文件。
事件
onabort 数据读取中断时触发
onerror 数据读取出错时触发
onloadstart 数据读取开始时触发
onload 数据读取成功完成时触发
onloadend 数据读取完成时触发,无论成功失败

祝大家学习愉快!终于写完了估计还是有错别字的。大家有不同见解的记得给我留言哦![小月博客]

时间: 2024-10-02 18:56:56

【小月博客】 Html5 上传图片 移动端、PC端通用的相关文章

分享3一个博客HTML5模板

1.材类别:半透明 博客html模板 个人博客 半透明html5博客主题,半透明,博客,博客html模板,个人博客,html5,灰色,半透明html5博客主题是一款适合用于个人博客主题,风格非常不错. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHNxZHM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 半透明html5博客主题 2.素材

js 设备判断(移动端pc端 安卓ios 微信)

苹果安卓判断 1 $(function () { 2 var u = navigator.userAgent, app = navigator.appVersion; 3 var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //g 4 var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端 5 if (isAndroid) { 6 al

破解TLS加密数据的一种实现(移动端+PC端)

上次分享了破解手机端加密数据的思路,就是使用中间人代理进行破解,网络安全把这种做法叫做man-in-the-middle,今天讲一下如何来实现. 恰巧2016年3月2号,360推送了一则关于代号溺亡的漏洞的消息,其本质讲的就是我们这篇文章所讨论的问题,但是我们干的是正经事. 既然涉及到中间人,我需要一个代理软件充当中间人的角色,这里我们选用软件fiddler,该软件是一个轻量级的抓包软件,但其同时实现了中间代理的的功能.抓包软件还是使用wireshark.至于为什么不直接使用fiddler来直接

【小月博客】用HTML5的File API做上传图片预览功能

前段时间做了一个项目,涉及到上传本地图片以及预览的功能,正好之前了解过 html5(点击查看更多关于web前端的有关资源) 可以上传本地图片,然后再网上看了一些demo结合自己的需求,终于搞定了.(PS : 不得不承认我这个人有多懒,没有需求的时候我向来不主动去学习).移动端完全支持哦!已测试. 下面给大家看看代码吧怎么实现的 第一:HTLM部分(这里不去做漂亮的样式了我们注重学习功能) <input type="file" id="fileElem" mul

css的技巧-转小月博客

1. 文字换行 /*强制不换行*/ white-space:nowrap; /*自动换行*/ word-wrap: break-word; word-break: normal; /*强制英文单词断行*/ word-break:break-all; 2. 两端对齐 text-align:justify;text-justify:inter-ideogra 3. 去掉Webkit(chrome)浏览器中input(文本框)或textarea的黄色焦点框 input,button,select,te

【JS】--监听页面的后退/返回(移动端/PC端)

$(function(){ function pushHistory() { var state = { title: "title", url: "#" }; window.history.pushState(state, "title", "#"); } pushHistory(); window.addEventListener("popstate", function(e) { alert(&quo

一款基于vue.js 和node构建个人博客项目

前言 本项目是一款个人学习的博客项目,主要是为了学习vue2 和 node.js.另外涉及到MySQL redis nginx 等技术栈知识 项目地址 预览地址 (PC或者手机) > 注意:PC端支持markdown编辑博客,但是手机端不支持编辑,仅支持查看博客内容 博客预览地址:node后台版本 预览账号 账号:test 密码:123 技术栈 前端:html.css.sass.ES6.webpack.vue-cli.vue2.vuex.vue-router.axios.element-ui 后

用 Flask 来写个轻博客 (27) — 使用 Flask-Cache 实现网页缓存加速

目录 目录 前文列表 扩展阅读 Flask-Cache 应用 Flask-Cache 实现视图函数缓存 缓存无参数的普通函数 缓存带参数的普通函数 缓存无动态参数的视图函数 缓存带动态参数的视图函数 前文列表 用 Flask 来写个轻博客 (1) - 创建项目 用 Flask 来写个轻博客 (2) - Hello World! 用 Flask 来写个轻博客 (3) - (M)VC_连接 MySQL 和 SQLAlchemy 用 Flask 来写个轻博客 (4) - (M)VC_创建数据模型和表

异想家博客图片批量压缩程序

为了方便给自己的博客配图,用Golang写了一个脚本处理,现分享出来,有需要的朋友也可以参考修改使用. 压缩规则 1.图片都等比例压缩,不破坏长宽比. 2.如果是横屏图片,压缩到宽度为1280,高度适应. 3.如果是竖屏图片,压缩到高度为1000,宽度适应. 4.如果分辨率小于这个,不压缩. 5.支持png.jpg.jpeg. 使用方法 go build jfzBlogPicCompress.go 原图放在当前目录下的raw目录中,压缩后的图片生成在thumb目录下,运行生成的二进制文件即可,压