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 相关文章推荐
JQuery实现自定义对话框的代码
Jun 15 Javascript
javascript 学习之旅 (1)
Feb 05 Javascript
jquery下实现overlay遮罩层代码
Aug 25 Javascript
javascript中onmouse事件在div中失效问题的解决方法
Jan 09 Javascript
为jquery的ajaxfileupload增加附加参数的方法
Mar 04 Javascript
js实现模拟银行卡账号输入显示效果
Nov 18 Javascript
JQUERY表单暂存功能插件分享
Feb 23 Javascript
JavaScript基于原型链的继承
Jun 22 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
Mar 15 Javascript
JQuery的加载和选择器用法简单示例
May 13 jQuery
详解Nuxt.js 实战集锦
Nov 19 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
Aug 07 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之第四天
2006/10/09 PHP
php $_ENV为空的原因分析
2009/06/01 PHP
PHP计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
微盾PHP脚本加密专家php解密算法
2020/09/13 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
2015/02/12 PHP
YII2框架中behavior行为的理解与使用方法示例
2020/03/13 PHP
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
2012/05/16 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
2014/03/03 Javascript
js加减乘除丢失精度问题解决方法
2014/05/16 Javascript
javascript表单验证和Window详解
2014/12/11 Javascript
js+css实现导航效果实例
2015/02/10 Javascript
window.location.reload 刷新使用分析(去对话框)
2015/11/11 Javascript
浅析js绑定事件的常用方法
2016/05/15 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
js实现下拉菜单效果
2017/03/01 Javascript
bootstrap modal+gridview实现弹出框效果
2017/08/15 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
原生JS无缝滑动轮播图
2019/10/22 Javascript
vue cli3 配置proxy代理无效的解决
2019/10/30 Javascript
JavaScript数组及常见操作方法小结
2019/11/13 Javascript
深入解析微信小程序开发中遇到的几个小问题
2020/07/11 Javascript
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
详解python中的Turtle函数库
2018/11/19 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
2019/06/27 Python
python selenium登录豆瓣网过程解析
2019/08/10 Python
用Python制作mini翻译器的实现示例
2020/08/17 Python
戴森台湾线上商城:Dyson Taiwan
2018/05/21 全球购物
英国第一职业高尔夫商店:Clickgolf.co.uk
2020/11/18 全球购物
实习生评语
2014/04/26 职场文书
保护环境倡议书500字
2014/05/19 职场文书
学校标语大全
2014/06/19 职场文书
新生开学寄语大全
2015/05/28 职场文书
追悼会家属答谢词
2015/09/29 职场文书
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL
Lakehouse数据湖并发控制陷阱分析
2022/03/31 Oracle