JavaScript代码实现txt文件的上传预览功能


Posted in Javascript onMarch 27, 2018

今天做项目刚好碰到这个记录一下。因为是简单的txt文件,只涉及文本,如果需要涉及图片预览就需要使用papaparse和jschardet,此处不多叙述。

 表单按钮使用js的onchange=”uploadfile()” 事件,function函数代码如下所示:

//此处为txt文件上传预览的js代码
function uploadfile(){
 var file=$("#txt")[0].files[0];
 //判断上传文件是不是txt格式,判断后缀是不是.txt
 if(file.name.substr(-4).toLocaleLowerCase() != '.txt'){
  alert("请上传格式为txt的文件!");
  windows.location="test.jsp";//重新定位到上传txt文件页面
 }
 else//如果上传文件是txt文件,则显示文件的预览
 {
  var reader=new FileReader;
  reader.readAsText(file,'gb2312');
  //reader.readAsDataURL(file);
  reader.onload=function(evt){
   var data=evt.target.result;  
   $('#textarea_id').val(data); 
  } 
 } 
}

效果如下:

JavaScript代码实现txt文件的上传预览功能
JavaScript代码实现txt文件的上传预览功能
JavaScript代码实现txt文件的上传预览功能

提示上传文件类型错误

补充:

js 上传文件预览

1. FILE API

   html5提供了FIle和FileReader两个方法,可以读取文件信息并读取文件。

2. example

<html>
<body>
<div id="test-image-preview" 
style="border: 1px solid rgb(204, 204, 204); width: 100%; height: 200px; background-size: contain; background-repeat: no-repeat; background-position: center center;"> </div>
<br/>
<div id="test-file-info"></div>
<br/>
<input type="file" id="test-image-file">
<script type="text/javascript">
var
 fileInput = document.getElementById('test-image-file'),
 info = document.getElementById('test-file-info'),
 preview = document.getElementById('test-image-preview');
// 监听change事件:
fileInput.addEventListener('change', function () {
 // 清除背景图片:
 preview.style.backgroundImage = '';
 // 检查文件是否选择:
 if (!fileInput.value) {
  info.innerHTML = '没有选择文件';
  return;
 }
 // 获取File引用:
 var file = fileInput.files[0];
 // 获取File信息:
 info.innerHTML = '文件: ' + file.name + '<br>' +
      '大小: ' + file.size + '<br>' +
      '修改: ' + file.lastModifiedDate;
 if (file.type !== 'image/jpeg' && file.type !== 'image/png' && file.type !== 'image/gif') {
  alert('不是有效的图片文件!');
  return;
 }
 // 读取文件:
 var reader = new FileReader();
 reader.onload = function(e) {
  var
   data = e.target.result; // 'data:image/jpeg;base64,/9j/4AAQSk...(base64编码)...'   
  preview.style.backgroundImage = 'url(' + data + ')';
 };
 // 以DataURL的形式读取文件:
 reader.readAsDataURL(file);
});
</script>
</body>
</html>

  以DataURL的形式读取到的文件是一个字符串,类似于data:image/jpeg;base64,/9j/4AAQSk...(base64编码)...,

常用于设置图像。如果需要服务器端处理,把字符串base64,后面的字符发送给服务器并用Base64解码就可以得到原始文件的二进制内容。

3. 解释

上面的代码还演示了JavaScript的一个重要的特性就是单线程执行模式。在JavaScript中,浏览器的JavaScript执行引擎在执行JavaScript代码时,总是以单线程模式执行,也就是说,任何时候,JavaScript代码都不可能同时有多于1个线程在执行。

你可能会问,单线程模式执行的JavaScript,如何处理多任务?

在JavaScript中,执行多任务实际上都是异步调用,比如上面的代码:

reader.readAsDataURL(file);

就会发起一个异步操作来读取文件内容。因为是异步操作,所以我们在JavaScript代码中就不知道什么时候操作结束,因此需要先设置一个回调函数:

reader.onload = function(e) {
 // 当文件读取完成后,自动调用此函数:
};

当文件读取完成后,JavaScript引擎将自动调用我们设置的回调函数。执行回调函数时,文件已经读取完毕,所以我们可以在回调函数内部安全地获得文件内容。

总结

以上所述是小编给大家介绍的JavaScript代码实现txt文件的上传预览功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript判断用户浏览器插件安装情况的代码
Jan 01 Javascript
jquery多选项卡效果实例代码(附效果图)
Mar 23 Javascript
jquery parent和parents的区别分析
Oct 02 Javascript
js利用数组length属性清空和截短数组的小例子
Jan 15 Javascript
jfinal与bootstrap的登录跳转实战演习
Sep 22 Javascript
JavaScript统计网站访问次数的实现代码
Nov 18 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
Oct 12 Javascript
JS获得一个对象的所有属性和方法实例
Feb 21 Javascript
利用node.js如何搭建一个简易的即时响应服务器
May 28 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
Apr 23 Javascript
vue+axios 前端实现的常用拦截的代码示例
Aug 23 Javascript
使用Vue实现调用接口加载页面初始数据
Oct 28 Javascript
Angularjs实现控制器之间通信方式实例总结
Mar 27 #Javascript
Angular中使用better-scroll插件的方法
Mar 27 #Javascript
使用node打造自己的命令行工具方法教程
Mar 26 #Javascript
详解Vue 全局引入bass.scss 处理方案
Mar 26 #Javascript
js构建二叉树进行数值数组的去重与优化详解
Mar 26 #Javascript
红黑树的插入详解及Javascript实现方法示例
Mar 26 #Javascript
js+canvas实现滑动拼图验证码功能
Mar 26 #Javascript
You might like
PHP的explode和implode的使用说明
2011/07/17 PHP
php中的boolean(布尔)类型详解
2013/10/28 PHP
PHP之sprintf函数用法详解
2014/11/12 PHP
Yii2框架redis基本应用示例
2018/07/13 PHP
php7 list()、session及其他模块的修改实例分析
2020/05/25 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
2020/10/30 PHP
JavaScript Event学习第二章 Event浏览器兼容性
2010/02/07 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
EditPlus注册码生成器(js代码实现)
2013/03/25 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
2014/08/30 Javascript
超炫的jquery仿flash导航栏特效
2014/11/11 Javascript
js同源策略详解
2015/05/21 Javascript
js实现可旋转的立方体模型
2016/10/16 Javascript
JS中setTimeout和setInterval的最大延时值详解
2017/02/13 Javascript
Kindeditor单独调用多图上传实例
2017/07/31 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
2018/07/02 Python
Python 实现将数组/矩阵转换成Image类
2020/01/09 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
2020/02/17 Python
解决tensorflow/keras时出现数组维度不匹配问题
2020/06/29 Python
Python实现石头剪刀布游戏
2021/01/20 Python
某公司部分笔试题
2013/11/05 面试题
办公室前台岗位职责范本
2013/12/10 职场文书
中国好声音广告词
2014/03/18 职场文书
试用期自我鉴定范文
2014/03/20 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
小学英语教学随笔
2015/08/14 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书
pytorch 权重weight 与 梯度grad 可视化操作
2021/06/05 Python
Nginx反向代理至go-fastdfs案例讲解
2021/08/02 Servers
tp5使用layui实现多个图片上传(带附件选择)的方法实例
2021/11/17 PHP
中国十大神话动漫电影排行榜 哪吒登顶 白蛇缘起排第七
2022/03/21 国漫