限制file上传类型

很多时候,我们都需要使用
<input type="file">
进行文件上传。
在上传的时候,我们需要对文件类型进行限制。
如果上传图片的时候。
用户只能够限制用户上传
.jpeg, .png, .gif, .bmp, .jpg, .webp

图片类型说明,特别是webp

1、jpg(jpeg):这是一种可以高度保留图片色彩信息的格式
2、png:该类型的图片可以实现透明
3、gif:图片所占体积小,可以实现动图
4、webp是一种支持有损压缩和无损压缩的图片文件格式 我想给大家分享一下webp这一种图片格式; webp
可能有些小伙伴是第一次看见这种格式
webp(发音:weppy)是由谷歌于2010年推出的新一代图片格式,
它同时提供了有损压缩与无损压缩(可逆压缩);
我们使用webp 图片优势:
它具有更优的图像数据压缩算法,能带来更小的图片体积;
拥有肉眼识别无差异的图像质量;
具备了无损和有损的压缩模式。
因为可以进行大幅度的压缩,向京东、淘宝都是大量使用这种格式的图片

accept 属性的使用

<template>
<div>
<input type="file" title="" accept=".jpeg,.png, .gif,.bmp,.jpg">
</div>
</template>

我们可以发现用户只能够选择我们规定的图片类型了
但是细心的小伙伴会发现
当我们选择[所有文件的时候]我们限制的文件类型就失效了
这个时候就很尴尬了。
经过我查阅文档,
并没有很好的办法去处理用户不去选择[所有文件的时候]
这个时候我们还得使用js去检测用户上传的文件类型

检测优化上传的文件类型

<template>
<div>
<input type="file" @change="funHander($event)"
accept=".jpeg,.png, .gif,.bmp,.jpg">
</div>
</template> <script>
export default {
setup () {
function funHander(e){ let fileName=e.target.files[0].name;
console.log('文件上传的名称',fileName); // pop() 方法用于删除并返回数组的最后一个元素
// 获取文件的后缀需要注意这样的文件类型 xxx.aaa.aaa.aaa.aaa.aa
// 这样的文件名称必须获取最后一个.[点]结束的,才能精确知道该文件的类型
let fileType=fileName.split(".").pop(); console.log( '文件类型',fileType)
let arr=['jpeg','png','gif','bmp','jpg'];
// 如果我们可以查找到对应文件类型,
// 说明用户选择正确[true],否者错误[false]
let typeRight=arr.indexOf(fileType)==-1 ? false :true;
if(!typeRight){
alert('文件类型错误,请上传jpeg,png,gif,bmp,jpg')
} }
return {funHander}
}
}
</script>
这样我们就可以很好的去解决用户选择的文件类型了。
用户上传正确就可以上传点击上传按钮,
否者就清空用户上传的文件内容,并提示用户

实现上面的功能

<template>
<div>
<input type="file" @change="funHander($event)"
ref="fileinput" accept=".jpeg,.png, .gif,.bmp,.jpg">
<button> 上传</button>
</div>
</template> <script>
import {ref} from 'vue'
export default {
setup () {
let fileinput=ref(); function funHander(e){
let fileName=e.target.files[0].name;
console.log('文件上传的名称',fileName); // pop() 方法用于删除并返回数组的最后一个元素
// 获取文件的后缀需要注意这样的文件类型 xxx.aaa.aaa.aaa.aaa.aa
// 这样的文件名称必须获取最后一个.[点]结束的,才能精确知道该文件的类型
let fileType=fileName.split(".").pop();
console.log( '文件类型',fileType) let arr=['jpeg','png','gif','bmp','jpg'];
// 如果我们可以查找到对应文件类型,
// 说明用户选择正确[true],否者错误[false]
let typeRight=arr.indexOf(fileType)==-1 ? false :true; if(!typeRight){
alert('文件类型错误,请上传jpeg,png,gif,bmp,jpg')
console.log(fileinput )
fileinput.value='';//清空文件
}
}
return {funHander,fileinput}
}
}
</script>

你不知道的<input type="file">的小秘密的更多相关文章

  1. input type='file'上传控件假样式

    采用bootstrap框架样式 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> &l ...

  2. <input type="file">上传文件并添加路径到数据库

    注:这里是用的mvc所以没法用控件 html代码 <form method="post" enctype="multipart/form-data"> ...

  3. html中,文件上传时使用的<input type="file">的样式自定义

    Web页面中,在需要上传文件时基本都会用到<input type="file">元素,它的默认样式: chrome下: IE下: 不管是上面哪种,样式都比较简单,和很多 ...

  4. Android:让WebView支持<input type=”file”…>元素

    最近在做一个活动页面:用户上传一张图片进行缩放.旋转后点击下一步填写内容后生成图片! 做好后经过各种测试是没有问题的,基本没有什么明显BUG,流程都能走通,但是嵌入到APP后,问题就来了! 在IOS上 ...

  5. HTML <input type="file">上传文件——结合asp.net的一个文件上传示例

    HTML的代码:(关键是要在form里设置enctype="multipart/form-data",这样才能在提交表单时,将文件以二进制流的形式传输到服务器) 一. <fo ...

  6. 上传文件 隐藏input type="file",用text显示

    <div> <span>上传文件:</span> <input type="file" id="upload_file" ...

  7. 原生HTML5 input type=file按钮UI自定义

    原生<input type="file" name="file" />长得太丑 提升一下颜值 实现方案一.设置input[type=file]透明度 ...

  8. 【原创】js中input type=file的一些问题

    1.介绍 在开发中,文件上传必不可少,input[type=file] 是常用的上传标签,但是它长得又丑.浏览的字样不能换,但是他长得到底有多丑呢.我们来看看在不同浏览器里的样子吧. <inpu ...

  9. 一个漂亮的上传按钮input[type=file]

    ;;} <div class="input-group xj-file xj-panel-top"> <span class="input-group- ...

  10. css input[type=file] 样式美化,input上传按钮美化

    css input[type=file] 样式美化,input上传按钮美化 参考:http://www.haorooms.com/post/css_input_uploadmh

随机推荐

  1. 有了这个告警系统,DBA提前预警不是难题

    摘要:告警功能是各大云平台必不可少的模块,个性化的告警配置,为帮助用户和运维人员及时发现问题发挥着重要作用. 本文分享自华为云社区<GaussDB(DWS) 数据库智能监控系统告警框架上线啦!& ...

  2. 网页“悼念模式”全站变灰/黑白色CSS代码

    <style> html { filter:grayscale(100%); -webkit-filter:grayscale(100%); -moz-filter:grayscale(1 ...

  3. -bash: /home/advert/bin/vim: No such file or directory

    今天advert用户使用vim时,突然报错 -bash: /home/advert/bin/vim: No such file or directory 之前还好好的,且其他用户都能用vim,查看也是 ...

  4. 同步时间,为什么我选 Chrony 而不是 NTP ?

    初识 chrony chrony 是网络时间协议(Network Time Protocol )的通用实现 它不但可以提供保持系统时间与 NTP 时钟服务器同步的服务,还能作为 NTP 服务器对其他服 ...

  5. IDEA整合SSM框架:简易图书操作模块

    这个SSM整合文章,以图书的增删改查为例 本篇文章源码已上传: Github:https://github.com/RivTian/University-coursework/tree/master/ ...

  6. 0x42 数据结构进阶-树状数组

    A题 楼兰图腾 链接:https://ac.nowcoder.com/acm/contest/1032/A 树状数组 + 逆序对 #include<bits/stdc++.h> using ...

  7. POJ2965 The Pilots Brothers' refrigerator (精妙方法秒杀DFS BFS)

    这道题和算法进阶指南的一道题解法一样,必须另操作为奇数.见证明过程 证明:要使一个为'+'的符号变为'-',必须其相应的行和列的操作数为奇数;可以证明,如果'+'位置对应的行和列上每一个位置都进行一次 ...

  8. StringBuilder 线程不安全,到底哪里不安全?

    StringBuilder 线程不安全,到底哪里不安全? 在Java中,字符串拼接是一个非常常见的操作,而对于频繁变动的字符串内容,使用StringBuilder是一个性能优化的选择.但是,Strin ...

  9. Linux系统CPU异常占用(minerd 、tplink等挖矿进程)

    转载请注明出处: 云服务器ECS(Linux) CPU使用率超过70%,严重时可达到100%,服务器响应越来越慢.  服务器中存在恶意minerd.tplink进程 该进程是服务器被入侵后,被恶意安装 ...

  10. 16-集电极开路门(OC门)

    集电极开路门(OC门) OC门 两个与非门,要实现非,一般来讲再与一下就可以. 能不能将输出端并在一起?普通的门电路永远不可能输出端并在一起,连在一起的. TTL与非门输出端连在一起 集电极断开之后连 ...