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 相关文章推荐
JQuery拖拽元素改变大小尺寸实现代码
Dec 10 Javascript
写得不错的jquery table鼠标经过变色代码
Sep 27 Javascript
使用typeof方法判断undefined类型
Sep 09 Javascript
jQuery实现提示密码强度的代码
Jul 15 Javascript
Javascript中的数据类型之旅
Oct 18 Javascript
jQuery正则验证注册页面经典实例
Jun 10 jQuery
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
Apr 12 Javascript
深入理解 Koa 框架中间件原理
Oct 18 Javascript
layui table复选框禁止某几条勾选的实例
Sep 20 Javascript
jQuery插件实现图片轮播效果
Oct 19 jQuery
JavaScript实现图片放大预览效果
Nov 02 Javascript
JavaScript使用canvas绘制坐标和线
Apr 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:风雨欲来 路在何方?
2006/10/09 PHP
elgg 获取文件图标地址的方法
2010/03/20 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
2017/06/08 PHP
js 利用className得到对象的实现代码
2011/11/15 Javascript
js调用AJAX时Get和post的乱码解决方法
2013/06/04 Javascript
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
新入门node.js必须要知道的概念(必看篇)
2016/08/10 Javascript
JavaScript DOM节点操作方法总结
2016/08/23 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
2017/01/29 Javascript
设置cookie指定时间失效(实例代码)
2017/05/28 Javascript
vue页面使用阿里oss上传功能的实例(二)
2017/08/09 Javascript
简单谈谈关于Angular Cli打包的事
2017/09/05 Javascript
原生JS实现多个小球碰撞反弹效果示例
2018/01/31 Javascript
使用vue如何构建一个自动建站项目
2018/02/05 Javascript
javascript实现留言板功能
2020/02/08 Javascript
JS前端广告拦截实现原理解析
2020/02/17 Javascript
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python调用C/C++动态链接库的方法详解
2014/07/22 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
2017/04/28 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
python 列表,数组和矩阵sum的用法及区别介绍
2018/06/28 Python
python3对接mysql数据库实例详解
2019/04/30 Python
python中树与树的表示知识点总结
2019/09/14 Python
python 多线程中join()的作用
2020/10/29 Python
CSS3中的Media Queries学习笔记
2016/05/23 HTML / CSS
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
光声世纪笔试题目
2012/08/25 面试题
小学运动会入场式解说词
2014/02/18 职场文书
文化与传播毕业生求职信
2014/03/09 职场文书
大宝sod蜜广告词
2014/03/21 职场文书
2014大学生职业生涯规划书最新范文
2014/09/13 职场文书
营销计划书范文
2015/01/17 职场文书
2015年班组长工作总结
2015/04/10 职场文书
2015年国庆节演讲稿范文
2015/07/30 职场文书