JS原生上传文件,读取文件格式,控制文件只可以上传某些格式,并使用fileReader转换格式
本文为代码片段记录,方便后期使用哇!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.myitem-one-list {
width: 500px;
}
.ng-star-inserted {
text-align: center;
}
.fileinput-button {
position: relative;
/* // display: inline-block; */
overflow: hidden;
cursor: pointer;
}
.fileinput-button input {
position: absolute;
right: 0px;
top: -20px;
opacity: 0;
-ms-filter: 'alpha(opacity=0)';
font-size: 50px;
}
</style>
</head>
<body>
<div style="padding:20px;display:flex">
<div style="text-align: center;display:inline-block;overflow: hidden;">
<span class=" fileinput-button">
<span style="display:inline-block;line-height: 30px">点击上传文件</span>
<input type="file" onChange="readExcel()" id="myfile01" />
</span>
</div>
</div>
<div>
</div>
<script>
function readExcel() {
let files = document.getElementById('myfile01').files
console.log(files);
if (files.length <= 0) {//如果没有文件名
return false;
} else if (!/\.(xls|xlsx|jpg)$/.test(files[0].name.toLowerCase()) || errorFileSize(files[0], '1MB')) {
console.log('上传格式不正确,请上传xls或者xlsx、jpg格式,且文件大小不得超过1mb');
return false;
}
const fileReader = new FileReader();
fileReader.onload = (ev) => {
try {
const data = ev.target.result;
console.log(data)
// 这里可以写其他操作啦
} catch (e) {
console.log('出错了')
return false;
}
};
fileReader.readAsDataURL(files[0]);
// readAsArrayBuffer(file): void 异步按字节读取文件内容,结果用ArrayBuffer对象表示
// readAsBinaryString(file): void 异步按字节读取文件内容,结果为文件的二进制串
// readAsDataURL(file): void 异步读取文件内容,结果用data: url的字符串形式表示
// readAsText(file, encoding): void 异步按字符读取文件内容,结果用字符串形式表示
}
/**
* 限制文件大小,返回 true代表文件格式有误
* @param {File} file 文件
* @param {String} limitSize 限制大小
* 使用方法:limitFileSize(files[0], '1MB')
*/
function errorFileSize(file, limitSize) {
var arr = ["KB", "MB", "GB"]
var limit = limitSize.toUpperCase();
var limitNum = 0;
for (var i = 0; i < arr.length; i++) {
var leval = limit.indexOf(arr[i]);
if (leval > -1) {
limitNum = parseInt(limit.substr(0, leval)) * Math.pow(1024, (i + 1))
break
}
}
if (file.size > limitNum) {
return true
}
return false
}
</script>
</body>
</html>
JS原生上传文件,读取文件格式,控制文件只可以上传某些格式,并使用fileReader转换格式的更多相关文章
- 【RMAN】Oracle中如何备份控制文件?备份控制文件的方式有哪几种?
真题1. 如何备份控制文件?备份控制文件的方式有哪几种? 答案:备份控制文件的方式有多种. ① 备份控制文件可以在线进行: SQL> ALTER DATABASE BACKUP CONTROLF ...
- HTML中上传与读取图片或文件(input file)----在路上(25)
input file相关知识简例 在此介绍的input file相关知识为: 上传照片及文件,其中包括单次上传.批量上传.删除照片.增加照片.读取图片.对上传的图片或文件的判断,比如限制图片的张数.限 ...
- bootstrap fileinput实现限制图片上传数量及如何控制分批多次上传
废话没有,直奔主题 问题点: fileinput提供了一个maxFileCount用于限制图片上传的数量,设置maxFileCount为1时,一次性选择超过一张会有如下提示: 当选择一张,不点上传,再 ...
- js - 原生ajax访问后台读取数据并显示在页面上
1.前台调用ajax访问后台方法,并接收数据 <%@ page contentType="text/html;charset=UTF-8" language="ja ...
- 关于Npoi+excel文件读取,修改文件内容的处理方式
因最近有需求场景,实现对文件的读写操作,又不单独生成新的文件,对于源文件的修改,做了一个简单实现,如下↓ // 要操作的excel文件路径 string fileName = Server.MapPa ...
- springboot的@Configuration文件读取static静态文件
错误 正确
- 文件读取及比较&文件信息保存
#include <stdio.h> #include <stdlib.h> //#include <regex.h> char* file_name_1 = &q ...
- VAuditDemo-任意文件读取
任意文件读取是属于文件操作漏洞的一种. 一般任意文件读取漏洞可以读取配置信息.甚至系统重要文件. 严重的话,就可能导致SSRF,进而漫游内网. 文件操作漏洞 任意文件删除--删除lock 任意文件复制 ...
- 仿jQuery的siblings效果的js原生代码
仿jQuery的siblings效果的js原生代码 <previousSibling> 属性返回选定节点的上一个同级节点(在相同树层级中的前一个节点). <nextSibling&g ...
随机推荐
- 记录一次sshd服务启动失败
记录一次sshd服务启动失败 问题描述: 服务器开机之后发现无法通过远程连接服务器终端,但是服务器并未宕机,于是考虑到sshd服务出现异常 解决思路: 查看服务器sshd服务运行情况 [root@ha ...
- Codeforces Round #826 (Div. 3) A-E
比赛链接 A 题解 知识点:模拟. 时间复杂度 \(O(n)\) 空间复杂度 \(O(n)\) 代码 #include <bits/stdc++.h> #define ll long lo ...
- MQTT+esp32+nodered+springboot 智能家居项目 -- 项目准备
1.后台系环境:idea jdk8.0以上 maven tomcat spring boot 2.前端环境 nodejs nodered 3.硬件环境: audrion esp32 ...
- 1.nginx学习
我们平时访问的网络网站就是WEB网络服务,允许用户通过浏览器访问互联网中的各种资源服务 WEB服务器会通过HTTP或者HTTPS的方式将请求内容传递给客户端 目前常见的WEB服务有IIS, Nginx ...
- gorm
特性 全功能 ORM 关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承) Create,Save,Update,Delete,Find 中钩子方 ...
- 【云原生 · Docker】Docker虚拟化技术
1.Docker入门简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化. 容器是完全使用沙箱 ...
- 抓包整理————ip 协议四[十五]
前言 简单了解一下ip 协议选路问题. 正文 比如host1 到 host2是直接传输,因为host1和 host2 是同一交换机,直接arp表知道对方的mac. 第二种是他们是不同网段之间通信. 第 ...
- 大前端html基础学习01
根目录 相对路径:针对图片数量比较多的情况,新建一个文件夹,将所有图片放进去,imgs/cat.webp (1)/:下一级 (2)a/b/c/cat.webp 返回路径(向外找):从下一级html中找 ...
- 解决windows installation failed! Error: 无法访问 Windows Installer 服务
这种错误,是因为没有开启winodws Installer这个服务导致的,在开始菜单搜索"服务",找到windows Installer 这个服务,右键--属性--把启动类型 选成 ...
- Python 缩进语法的起源:上世纪 60-70 年代的大胆创意!
上个月,Python 之父 Guido van Rossum 在推特上转发了一篇文章<The Origins of Python>,引起了我的强烈兴趣. 众所周知,Guido 在 1989 ...