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 相关文章推荐
IE 缓存策略的BUG的解决方法
Jul 21 Javascript
asp批量修改记录的代码
Jun 25 Javascript
分享精心挑选的12款优秀jQuery Ajax分页插件和教程
Aug 09 Javascript
深入剖析JavaScript中的枚举功能
Mar 06 Javascript
JavaScript常用字符串与数组扩展函数小结
Apr 24 Javascript
Vue.js 2.0学习教程之从基础到组件详解
Apr 24 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
Jul 26 Javascript
js如何编写简单的ajax方法库
Aug 02 Javascript
详解用Webpack与Babel配置ES6开发环境
Mar 12 Javascript
vue-simple-uploader上传成功之后的response获取代码
Sep 07 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
Oct 31 Javascript
如何在CocosCreator里画个炫酷的雷达图
Apr 16 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
教你如何快捷的使用cmd访问mysql小技巧
2014/05/26 PHP
CodeIgniter框架URL路由总结
2014/09/03 PHP
php自定义错误处理用法实例
2015/03/20 PHP
深入理解PHP中的Streams工具
2015/07/03 PHP
详解php的socket通信
2015/08/11 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
2016/10/17 PHP
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
javascript中this指向详解
2016/04/23 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
BootStrapTable服务器分页实例解析
2016/12/20 Javascript
ES6中Proxy代理用法实例浅析
2017/04/06 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
2019/01/03 Javascript
Layui多选只有最后一个值的解决方法
2019/09/02 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
2020/11/16 Javascript
Python Sleep休眠函数使用简单实例
2015/02/02 Python
pandas 按照特定顺序输出的实现代码
2018/07/10 Python
对Python3之进程池与回调函数的实例详解
2019/01/22 Python
python Django里CSRF 对应策略详解
2019/08/05 Python
python破解bilibili滑动验证码登录功能
2019/09/11 Python
html5中如何将图片的绝对路径转换成文件对象
2018/01/11 HTML / CSS
家得宝官网:The Home Depot(全球最大的家居装饰专业零售商)
2018/12/17 全球购物
体育教师工作总结的自我评价
2013/10/10 职场文书
物流专业毕业生推荐信范文
2013/11/18 职场文书
4s店机修工岗位职责
2013/12/20 职场文书
大学生学业生涯规划
2014/01/05 职场文书
企业文化口号
2014/06/12 职场文书
戒毒悔改检讨书
2014/09/21 职场文书
思想纪律作风整顿剖析材料
2014/10/11 职场文书
2015年元旦联欢晚会活动总结
2014/11/28 职场文书
2016暑期校本培训心得体会
2016/01/08 职场文书