整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

一个自定义文件上传控件样式的技巧

一个自定义文件上传控件样式的技巧

近,在做后台管理系统时候,多次碰到文件上传功能,以前可能也是这么做的,但绝对是第一次将处理文件上传控件样式的技巧方式写下来。

文件上传控件样式处理的技巧

这应该是一个比较古老的话题了,每个浏览器下面的文件上传控件都表现的不一样,而且不能定义它的样式。我们为了让它在浏览器中更好看一点,可谓是绞尽脑汁。

一、伪装法:

伪装法可能是我们用的最多的一种处理方式, 下面通过一个例子来看一下它的工作原理:

dom结构:

将input=file元素放在一个父元素里,将input=file 的透明度设置为0,(注意:透明度为0的元素是可以绑定点击事件的,这里不清楚的可以参考我之前写的这篇文章CSS隐藏的秘密),这样就将这个父元素伪装成了文件上传控件:通过设置这个父元素的位置来决定input的定位,设置这个父元素的宽高来缩放input的点击范围。(有些浏览器不支持文件上传控件改变宽高),改变这个父元素的样式来呈现不同的按钮“长相”。

样式大概是这样的:

上面我们一直提到,input=file元素在某些浏览器下是无法改变大小的,当把按钮设计的比较大而长的时候,点击伪装按钮可能点击不到透明的文件上传控件,这也是伪装法的一个弊端。

然而,下面这个方法(l-f-i-i法)才是我们一直使用的一个比较有效的解决方案。

二、l-f-i-i法:

l-f-i-i(label-for-input-id的缩写)的原理就是利用label标签的for属性和input的id属性的关联作用来实现的。来看一下例子的代码结构:

DOM结构是这样的:

父元素由上面那个例子的a标签改成label标签。这样好和子元素input建立关联。

CSS样式是这样的:

从样式文件我们看到,input的宽高大小设置了100%。这里不是所有浏览器都会起作用。

效果图是这样的:

最后,点击label(上图那个背景为#ddd的区域)区域时会触发文件上传控件的事件,而现在不管按钮多大都能触发(由于label的for与input的id已经关联了)

写在最后的总结:

当然,方法也要根据需求的具体情况,兼容范围而定,我写的内容基本都是自己使用过的,如有不对的对方,可以留言,谢谢。

短内容,说完整事,哪怕只读一篇也能学知识。点击关注小郑搞码事,说的都是那堆代码。谢谢您的鼓励!

AVA+WORD图片上传控件,ASP.NET – 支持WORD上传的富文本编辑器,HTML5 – 支持WORD上传的富文本编辑器,ASP.NET支持word上传的富文本编辑器,PHP支持Word上传的富文本编辑器,百度ueditor编辑器如何导入word文档,如何实现导入WORD文档到UEDITOR编辑器中,导入word文档到百度编辑器中,将word文档导入到ueditor编辑器中

前端不固定某一种语言和框架,要求全部都能够支持,比如HTML5,HTML,VUE,React等。

后端的话最好能够支持任意语言,实际上哪一种开发语言开发的后端都无所谓,因为提供给前端的只是一个接口,前端并不关心后端的具体实现。

导入后图片自动上传到服务器中,图片和文字HTML自动添加到编辑器中,保留word文档的格式,字体大小,字体颜色等信息

能够支持多个系统平台,比如Windows,macOS,Linux,信创国产化系统,中标麒麟,银河麒麟,统信UOS,中科方德,龙芯,华为鲲鹏等。

客户端不用安装控件。这块网上资料有一些,找到的论坛里面也有部分交流。

主要的方案就是提供一个转换接口,转换接口使用RESTful协议,这样的话兼容性更好一点,其它的平台用起来的话更方便简单一点,而且测试起来也方便。

实际上这个与后端是无关的

现有项目需要为TinyMCE增加导入word文件的功能,导入后word文件里面的图片自动上传到服务器中,word里面的文本样式保留

用户一般在发新闻和发文章时用到,算是一个高频使用功能,用户体验上来讲确实是很好,和以前的发新闻或者发文章的体验比起来要方便许多,也确实能够给用户带来许多的便利 。

大领导要求提供产品完整源代码,领导要求能够自主可控,公司有自己的产品,领导要求能够集成在自己的产品中给客户使用。示例下载

https://gitee.com/xproer/zyoffice-ueditor1.5x

主要步骤如下:

1.上传zyoffice文件夹

2.在工具栏中增加插件按钮

3.在页面中引入组件文件,初始化组件

效果

开发文档:https://drive.weixin.qq.com/s?k=ACoAYgezAAwsDazDKJ

产品比较:https://drive.weixin.qq.com/s?k=ACoAYgezAAwh8oq8Zf

产品源代码:https://drive.weixin.qq.com/s?k=ACoAYgezAAwjJM8412

报价单:https://drive.weixin.qq.com/s?k=ACoAYgezAAwsfyDdrf

前主流的几款文件上传控件,以及优缺点,百度上传插件WEB UPLOADER,使用WEBUPLOADER组件实现大文件分片上传,断点续传,百度WEBUPLOADER开源上传控件,百度WEBUPLOADER上传文件夹技术,WEBUPLOADER上传文件夹技术,JS实现文件夹的多线程上传和下载,JS实现文件夹的加密上传和下载,JS怎么实现文件夹的上传和下载,vue实现文件夹的上传和下载,web实现文件夹的上传和下载,网页实现文件夹的上传和下载,dom实现文件夹的上传和下载,html5实现文件夹的上传和下载,JavaScript实现文件夹的上传和下载,JS如何实现文件夹的上传和下载,JS实现文件夹的上传和下载解决方案,百度webuploader实现文件夹的上传和下载,webuploader实现文件夹的上传和下载,JS实现文件夹的上传和下载,WEBUPLOADER上传大文件的三种解决方案,WEBUPLOADER上传大文件的解决方案,WEBUPLOADER上传大文件的方案,百度WEBUPLOADER上传大文件的三种解决方案,百度WEBUPLOADER上传大文件的三种代码,百度WEBUPLOADER上传大文件的三种源码,百度WEBUPLOADER上传大文件的三种源代码,HTML5上传大文件的三种源代码,JavaScript上传大文件的三种源代码,WEBUPLOADER如何实现大文件断点续传、秒传,

百度的webuploader实际上就是用的html5的API,也就是chrome的API,你要问我好不好用,我只能说基本的需求能够凑合着用,至于好不好用就见仁见智了。

现在chrome提供了相关的API,在HTML5中也能够上传文件,不过有限制,每个域名限制了5个TCP连接。用起来不是那么的舒服,也不够灵活,当然也能够满足一般的使用场景。不太复杂的也能够凑合着用。

网上找了一圈,基本上都是一些文章,能用到的产品很少。

有点搞不懂百度这边,产品上面问题一大堆,也联系不到他们的开发团队,感觉他们就没用心做这个产品。之前一个哥们接的一个项目也是用的他们的产品,但是客户那边在用的时候遇到了问题。怎么都联系不到百度的开发团队

前端框架的话VUE2,VUE3,VUE-CLI,React,HTML5都可能用到,看项目需求吧。也不一定,反正不管用哪个框架都是用。

下载这块就不指望了,根本就没提供这块的API,也没有提供代码。

后端的话ASP.NET,JAVA,政府项目JAVA用的多一些,还有JSP的,有些公司有成熟的产品用的是JSP。

但是如果有上传文件夹,文件夹中包含很多文件,比如1万或者10万,这种场景下用起来就不是那么的舒服了,如果单个文件的大小超过10G,比如20G,这种场景下用起来也不是特别的舒服。

还有批量下载的话HTML5的能力也有限,下是能下,但是每下一个文件就需要用户手动确认一下,那比如我要下载100个文件,也需要确认100次,用户不太接受这种方式。

纯JS的方案不多,可选方案不多,基本上只能依造HTML5,HTML5一变基本上就嘎了。可扩展性也不用想了。基本上为零。

1.下载示例

https://gitee.com/xproer/up6-vue-cli



将up6组件复制到项目中

示例中已经包含此目录



1.引入up6组件



2.配置接口地址

接口地址分别对应:文件初始化,文件数据上传,文件进度,文件上传完毕,文件删除,文件夹初始化,文件夹删除,文件列表

参考:http://www.ncmem.com/doc/view.aspx?id=e1f49f3e1d4742e19135e00bd41fa3de



3.处理事件



启动测试



启动成功



效果



数据库



源码工程文档:https://drive.weixin.qq.com/s?k=ACoAYgezAAw1dWofra

源码报价单:https://drive.weixin.qq.com/s?k=ACoAYgezAAwoiul8gl

OEM版报价单:https://drive.weixin.qq.com/s?k=ACoAYgezAAwuzp4W0a

控件源码下载:https://drive.weixin.qq.com/s?k=ACoAYgezAAwbdKCskc