form表单提交file
form表单提交文件,这毫无疑问不是个好办法。但是,存在既有意义。既然H5都还让着东西存在着,呢么必然有其意义。
form表单中的input type=file这个空间,不得不说奇丑无比!问题是还不能修改它的样式,这就更让人蛋疼了。
好了,不闲扯,咱还是一条一条的列出来。
首先,就像开头说的,奇丑无比。那么自然是不可能就这么放页面里的,老板会打死你,美工会打死你,你自己都会打死你!那么怎么办呢?
display:none!唉,好办法,我给它干掉,再搞个好看的button耦合到file控件上不就行了吗?就只要
$("#btn").on('click', function(){
$("#file").click();
});
不久完事大吉了吗?
chrome说:好!ff说:OK!IE说:我去你奶奶的,你谁啊?我让你点了吗?你想干什么?!!呵呵、、、
这就TM的尴尬了。
那么怎么办呢?别管你再怎么纠结或者僧器,你还是得老老实实opacity:0; 不光这样,你还得filter:alpha(opacity=0); (笑哭脸)ie就是这么任性。(ie9兼容opacity)
然后把你可爱的按钮放到file控件下层,记得是下层,让用户实际点击的是file控件。
————————————————————————————————华丽的。。。分割线+++++++++++++++++++++++++++++++++++++++++++++++++++
你以为这样就完了》??
难道你上网的时候上传头像没有预览?还有你选择文件的时候选错了格式怎么办?你的相册一次想上传N张图片怎么办?哈
我不会这么轻易的就狗带!
OK,做个图片预览吧。
其实图片预览的话要涉及到几方面。
这里先把file控件的一些特性罗列一下,下面都要用到。
首先,file的value不是你想想中的value,不要妄想了。而且file控件的value是不可编辑的,所以我们获取了也没卵用。这在我们清除文件的时候很心累。我们如果想要获取文件的地址,需要一些小小的手段。
其次,file控件支持accept属性,值得话类似image/*形式,*可以替换成相应的格式,多种格式逗号分隔。其实这种方式是不被推荐的,官方没说为什么不推荐。本人亲试觉得还真是别用了,卡出翔。加个类型 (image/*)卡出一 个级别,如果再有具体的格式(image/jpg)又卡出一个级别,后果就是被打死。。所以呢,还是服务器验证好了,或者干脆不验证,让用户去死(我什么都没说、、、)
然后,file控件还支持multiple属性,multiple=“multiple”,而如何获取每个文件,将在ajax中祥述。
最后,图片预览。
如何预览呢?两种方式,一是服务器预览,二是本地预览。本地预览才是真理。
那么就需要获取文件的url,写入到img的src里。之前说了,value并不是我们想要的,那么就需要用到js了。
function getUrl (file){
var url = null;
if(window.createObjectURL){ //basic
url = window.createObjectURL(file);
}
else if(window.URL){ //firefox
url = window.URL.createObjectURL(file);
}else if(window.webkitURL){ //webkit or chrome
url = window.webkitURL.createObjectURL(file);
}
return url;
};
这段拿去尽情copy好了,死东西。jq并不提供相应方法。
然后url都有了,直接塞给img就完了。
至于头像的修改啦,什么裁剪啦什么的,那就不再本文范围内了。
form表单提交file的更多相关文章
- ajax form表单提交 input file中的文件
ajax form表单提交 input file中的文件 现今的主流浏览器由于ajax提交form表单无法把文件类型数据提交到后台,供后台处理,可是开发中由于某些原因又不得不用ajax提交文件, 为了 ...
- Java后台使用httpclient入门HttpPost请求(form表单提交,File文件上传和传输Json数据)
一.HttpClient 简介 HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 ...
- Form表单提交数据的几种方式
一.submit提交 在form标签中添加Action(提交的地址)和method(post),且有一个submit按钮(<input type='submit'>)就可以进行数据的提交, ...
- Form表单提交,Ajax请求,$http请求的区别
做过前端同学想必都避免不了要和后台server打交道.而以下这三种与后台交互的方式想必大家都不陌生. Form表单提交,Ajax请求,Angular的$http请求 以前一直搞不清楚什么时候应该用哪种 ...
- Form 表单提交的几种方式
简单的总结一下form表单提交的几种方式:1.最简单的方式 就用form的submit提交方式,这种提交方式是不需要回调函数的 这种方式最近到一个form提供action路径后台接受就可以< ...
- 前端基础:form表单提交
今天介绍下form表单提交经常用到的表单元素. 1:datalist元素,一般与input组建配合使用,以定义可能输入的值,例如: <!DOCTYPE html> <html lan ...
- js_ajax模拟form表单提交_多文件上传_支持单个删除
需求场景: 用一个input type="file"按钮上传多张图片,可多次上传,可单独删除,最后使用ajax模拟form表单提交功能提交到指定方法中: 问题:由于只有一个file ...
- 24.form表单提交的六种方式
form表单提交方式 1.无刷新页面提交表单 表单可实现无刷新页面提交,无需页面跳转,如下,通过一个隐藏的iframe实现,form表单的target设置为iframe的name名称,form提交目标 ...
- c#WebApi使用form表单提交excel,实现批量写入数据库
思路:用户点击下载模板按钮,获取到excel模板,然后向里面填写数据保存.from表单提交的时候选择保存好的excel,实现数据的批量导入过程 先把模板放在服务器的项目目录下面:如 模板我一般放在:F ...
随机推荐
- Codeforces Round #317 div2 E div1 C CNF 2 (图论,匹配)
CNF 2 'In Boolean logic, a formula is in conjunctive normal form (CNF) or clausal normal form if i ...
- Android(java)学习笔记143:Android中View动画之 XML实现 和 代码实现
1.Animation 动画类型 Android的animation由四种类型组成: XML中: alph 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动 ...
- "Uncaught SyntaxError: Unexpected token <"错误完美解决
今天写代码的时候发现了"Uncaught SyntaxError: Unexpected token <" <html>的js错误,而且还是html的第一行,我就 ...
- JS 、JQ 获取宽高总结 & JS中getBoundingClientRect的作用及兼容方案
1.getBoundingClientRect的作用 getBoundingClientRect用于获取某个html元素相对于视窗的位置集合. 执行 object.getBoundingClien ...
- Freemarker入门小案例(生成静态网页的其中一种方式)
其实生成静态网页的方式有好多种,我昨天看了一下,Freemarker是其中一种,但是Freemarker现在我们都用得比较少了,现在用得ActiveMQ用来发送信息到静态页面,不过想了一下这个小东西, ...
- CPP-基础:C++的new int()与new int[]
编写一个List类: class List { int length; //列表长度 int* lpInt; //列表指针 List(int size); ~List(); } List::List( ...
- XML解析(二) SAX解析
XML解析之SAX解析: SAX解析器:SAXParser类同DOM一样也在javax.xml.parsers包下,此类的实例可以从 SAXParserFactory.newSAXParser() 方 ...
- HTML5触摸事件
touchstart .touchmove .touchend 事件 touchstart事件:当手指触摸屏幕时触发,即使有一个手指放在屏幕上也会触发. touchmove事件:当手指在屏幕上滑动时触 ...
- std::ios::sync_with_stdio和tie()——给cin加速
平时在Leetcode上刷题的时候,总能看到有一些题中最快的代码都有这样一段 static const auto init = []() { std::ios::sync_with_stdio(fal ...
- tkinter学习-菜单与画布
阅读目录 Menu 菜单控件 Menubutton 菜单按钮控件 OptionMenu 选项菜单 Canvas 画布控件 Menu: 说明:菜单控件,显示菜单栏,下拉菜单和弹出菜单 属性:创建一个顶级 ...