博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我的前端工具集(二)文件上传的封装
阅读量:6093 次
发布时间:2019-06-20

本文共 3859 字,大约阅读时间需要 12 分钟。

我的前端工具集(二)文件上传的封装

 

liuyuhang原创,未经允许禁止转载

 

目录

 

1.文件上传样式与功能

 

  1.1.文件上传的表现

    文件上传控件的代码比较简单,功能都是浏览器封装好的,实际上也没啥不好的,就是难看 

    你做出来这个样子,产品经理肯定跟你急!!

    

    代码也蛮容易的,如下:

1 

    不多说了,反正我自己都看不过去(公司没专职产品经理,我是个混合职业!)

 

  1.2.需求描述

 

  • 任意的按钮或某种html控件,点击以后能够使用上传控件的功能
  • 选择文件后文件的路径要与文件名要能够正确的显示出来

 

2.封装思路

 

  2.1.隐藏 file 控件

 

    第一反应是style=“display:none”

    然而网上搜了一下,竟然很多人说style="opacity: 0",然后将制作后的控件的z-index提前,

    同时调整相对位置,将原控件覆盖。

 

    提供这种方案的,你有病么?哪里抄的?透明度为0但是还占位,东西还存在,还要写很多内容

    来调整位置。。。

    脑袋有泡。

 

  2.2.click事件联动调用

 

    type=“file”的input元素本身是有内置的click事件的,我们需要将自己重写的html的点击事件,来获取

    隐藏的type=“file”的input元素,然后调用其click事件,这样就能够完成上传功能。

 

  2.3.上传的文件路径显示

 

    文件是否选择成功,选择的什么文件,需要有一个“空间”来接收并显示,浏览器自身的上传控件后面,

    会在选择了文件以后,显示文件名的。

    使用console.log($("#fileInput").val()),和console.log($("#fileInput"))打印的内容如下图:

    

    

    展开jquery对象后,在value属性中找到了上述信息,如下图:

    

    因此获取文件名也不是啥难事了。

 

3.代码

 

    3.1.HTML代码如下:

 

1        
2
3
4
5
6
7
8 9 10 11
12
13

 

     3.2.JS代码如下:

 

1      $(function() { 2              fileUploadListener("fileUploadList"); //初始化监听器 3         }) 4         /** 5          * 监听器 6          */ 7         function fileUploadListener(id) { 8             $("#" + id + " .btn").unbind("click"); //移除监听器 9             //文本框绑定监听器10             $("#" + id + " .fileUpload").change(function() {11                 $(this).next().next().val($(this).val());12             })13             //选择文件按钮监听器14             $("#" + id + " .chooseFile").click(function() {15                 $(this).parent().prev().click();16                 console.log($(this).parent().prev())17             });18             //修改按钮监听器19             $("#" + id + " .modifyChooseFile").click(function() {20                 $(this).parent().prev().click();21                 console.log($(this).parent().prev())22             });23             //上传按钮监听器24             $("#" + id + " .fileUploadSubmit").click(function() {25                 var dom = $(this).parent().prev();26                 testUpload(dom);27             });28         }

 

      3.3.异步文件上传代码如下:

 

1 /* 2          * 点击上传按钮的submit的函数 3          */ 4         function testUpload(dom) { 5             var fileObj = dom[0].files[0];//文件上传控件中的file信息获取 6             if (null == fileObj || '' == fileObj || 'undefinded' == typeof fileObj) {
//校验 7 dom.next().next().val("你未选择任何文件!");//提示 8 return null; 9 }10 if (fileObj.size > 1024 * 1024 * 10) { //文件大于10m11 dom.next().next().val("你选择的文件太大了,超过了10M,限制上传");//提示12 return null;13 }14 var fileForm = new FormData(); //创建file from15 fileForm.append("action", "UploadVMKImagePath"); //修改头16 fileForm.append("file", fileObj); //添加文件对象17 18 var data = fileForm;19 20 $.ajax({21 url : local + "/testFileUpload.do", //测试上传文件接口22 data : data,23 type : "Post",24 dataType : "json",25 cache : false, //上传文件无需缓存26 processData : false, //用于对data参数进行序列化处理 这里必须false27 contentType : false, //头信息修改,必须28 success : function(resultMap) {29 console.log(resultMap);//获取的返回信息30 console.log("上传完成!");31 },32 error : function(resultMap) {33 console.error(resultMap);34 }35 })36 }

 

  代码自己看,反正内容不多!!

 

4.效果

 

 

 

  好歹能看了,css自己改去吧。文件已经躺在本地了!

 

以上!!

转载于:https://www.cnblogs.com/liuyuhangCastle/p/9726939.html

你可能感兴趣的文章
cocos2d-x 画
查看>>
hadoop(6)---mapred-site.xml 详解以及常用配置。
查看>>
修改GRUB2背景图片
查看>>
Ajax异步
查看>>
好记性不如烂笔杆-android学习笔记<十六> switcher和gallery
查看>>
JAVA GC
查看>>
codeforce 599B Spongebob and Joke
查看>>
3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)
查看>>
9、Dubbo-配置(4)
查看>>
前端第七天
查看>>
BZOJ 2190[SDOI2008]仪仗队
查看>>
图解SSH原理及两种登录方法
查看>>
[转载] 七龙珠第一部——第058话 魔境圣地
查看>>
【总结整理】JQuery基础学习---样式篇
查看>>
查询个人站点的文章、分类和标签查询
查看>>
基础知识:数字、字符串、列表 的类型及内置方法
查看>>
iOS&OSX系统初步了解
查看>>
JSP的隐式对象
查看>>
P127、面试题20:顺时针打印矩阵
查看>>
JS图片跟着鼠标跑效果
查看>>