html5+javascript实现简单上传的注意细节


Posted in Javascript onApril 18, 2016

简单记录下今早做H5上传中一些代码还有坑

一、展示

因为前端上传文件是必须通过form表单的,不能使用ajax,这样的话一个移动页面放入一个type为file的input真心不怎么好看,如下图,很挫有没有

html5+javascript实现简单上传的注意细节

解决办法找了下,PC上有些是把这个input换成flash,采用jquery的工具库比如uploadify来做,但是移动端大部分浏览器是不支持flash的。所以最后采用的办法还是用form表单的形式,只是把这个form和input的透明度设置为0,让它们和准备显示的内容同时在一个div中,显示的内容可以做成自己想要的样子。代码如下:

<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
  <title></title>
  <style>
   div{width: 100%;}
   .logo img{display:block; margin:0 auto;}
   .upload{position: relative;width: 80px;height: 18px;line-height: 18px;background: #2fc7c9;text-align: center;
     color: #FFF;padding: 0px 5px;-webkit-border-radius: 2px;border-radius: 2px;
     margin: 0 auto;
     }
   .upload form{width:100%;position:absolute; left:0; top:0;opacity:0; filter:alpha(opacity=0);}
   .upload form input{width: 100%;}
  </style>
 </head>
 <body>
  <div class="logo">
   <img src="img/1.jpg" />
  </div>
  <div class="upload">
   <p>上传图片</p>
   <form>
    <input type="file" />
   </form>
  </div>
 </body>
</html>

html5+javascript实现简单上传的注意细节

样子如图,这样展现就在“上传图片”这个p标签中,点击它就有选择file的效果

二、JS代码

我这边写的蛮简单的,只是用了下h5上传的的基本功能

html代码如下,action为要请求的路径,我这边做的是当文件发生改变时就上传修改头像,input标签的name属性不能省去,具体跟后端接口有关

<form id="uploadForm" enctype="multipart/form-data" method="post" action="XXXXXX">
  <input type="file" name="imageFile" id="imageFile" onchange="fileSelected()" />
</form>
var iMaxFilesize = 2097152; //2M
window.fileSelected = function() {
 var oFile = document.getElementById('imageFile').files[0]; //读取文件
 var rFilter = /^(image\/bmp|image\/gif|image\/jpeg|image\/png|image\/tiff)$/i;
 if (!rFilter.test(oFile.type)) {
  alert("文件格式必须为图片");
  return;
 }
 if (oFile.size > iMaxFilesize) {
  alert("图片大小不能超过2M");
  return;
 }
 var vFD = new FormData(document.getElementById('uploadForm')), //建立请求和数据
  oXHR = new XMLHttpRequest();
 oXHR.addEventListener('load', function(resUpload) {
  //成功
 }, false);
 oXHR.addEventListener('error', function() {
  //失败
 }, false);
 oXHR.addEventListener('abort', function() {
  //上传中断
 }, false);
 oXHR.open('POST', actionUrl);
 oXHR.send(vFD);
};

细节决定成败,所以做任何事情都要认真对待。

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
javascript attachEvent和addEventListener使用方法
Mar 19 Javascript
javascript dom 操作详解 js加强
Jul 13 Javascript
js url传值中文乱码之解决之道
Nov 20 Javascript
jquery多选项卡效果实例代码(附效果图)
Mar 23 Javascript
Jquery实现页面加载时弹出对话框代码
Apr 19 Javascript
JS在IE下缺少标识符的错误
Jul 23 Javascript
详解Vue使用命令行搭建单页面应用
May 24 Javascript
VueJs组件prop验证简单介绍
Sep 12 Javascript
ng-alain表单使用方式详解
Jul 10 Javascript
小程序实现页面顶部选项卡效果
Nov 06 Javascript
在Vue中使用icon 字体图标的方法
Jun 14 Javascript
es6中Promise 对象基本功能与用法实例分析
Feb 23 Javascript
jQuery的内容过滤选择器学习教程
Apr 18 #Javascript
原生JS和jQuery版实现文件上传功能
Apr 18 #Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
Apr 18 #Javascript
jQuery 如何给Carousel插件添加新的功能
Apr 18 #Javascript
AngularJS入门教程之AngularJS模型
Apr 18 #Javascript
AngularJS入门教程之AngularJS指令
Apr 18 #Javascript
AngularJS入门教程之AngularJS表达式
Apr 18 #Javascript
You might like
PHP+DBM的同学录程序(5)
2006/10/09 PHP
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
2009/05/27 PHP
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
Yii实现文章列表置顶功能示例
2016/10/18 PHP
PHP利用二叉堆实现TopK-算法的方法详解
2017/04/24 PHP
jquery cookie插件代码类
2009/05/26 Javascript
jquery ajax abort()的使用方法
2010/10/28 Javascript
js 删除数组的几种方法小结
2014/02/21 Javascript
Node.js中创建和管理外部进程详解
2014/08/16 Javascript
js实现浏览器窗口大小被改变时触发事件的方法
2015/02/02 Javascript
jQuery实现冻结表格行和列
2015/04/29 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
详解Angular2 之 结构型指令
2017/06/21 Javascript
vue toggle做一个点击切换class(实例讲解)
2018/03/13 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
vue axios重复点击取消上一次请求封装的方法
2019/06/19 Javascript
[01:40]2014DOTA2国际邀请赛 三冰SOLO赛后采访恶搞
2014/07/09 DOTA
[01:00:54]TI4正赛第二日开场
2014/07/20 DOTA
Python OS模块常用函数说明
2015/05/23 Python
TensorFlow索引与切片的实现方法
2019/11/20 Python
python3 使用traceback定位异常实例
2020/03/09 Python
Python小白不正确的使用类变量实例
2020/05/29 Python
Python+OpenCV图像处理——图像二值化的实现
2020/10/24 Python
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
政法学院毕业生求职信
2014/02/28 职场文书
企业精细化管理实施方案
2014/03/23 职场文书
小学语文课后反思精选
2014/04/25 职场文书
机关门卫的岗位职责
2014/04/29 职场文书
市级文明单位申报材料
2014/05/07 职场文书
人事任命书范文
2014/06/04 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
党员十八大心得体会
2014/09/12 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
python缺失值的解决方法总结
2021/06/09 Python