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克隆对象深度介绍
Nov 20 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
Aug 14 Javascript
JS对象与json字符串格式转换实例
Oct 28 Javascript
JQuery显示隐藏DIV的方法及代码实例
Apr 16 Javascript
jquery实现简单的表单验证
Nov 17 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
Aug 20 Javascript
AngularJS 面试题集锦
Sep 06 Javascript
angularjs下拉框空白的解决办法
Jun 20 Javascript
Vue2.0如何发布项目实战
Jul 27 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
Mar 29 Javascript
了解Javascript中函数作为对象的魅力
Jun 19 Javascript
Vue 401配合Vuex防止多次弹框的案例
Nov 11 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对称加密函数实现数据的加密解密
2016/10/27 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
Mootools 1.2教程(21)——类(二)
2009/09/15 Javascript
JS解析XML的实现代码
2009/11/12 Javascript
用jquery实现学校的校历(asp.net+jquery ui 1.72)
2010/01/01 Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
2012/06/22 Javascript
jquery获取tagName再进行判断
2014/05/29 Javascript
28个常用JavaScript方法集锦
2015/01/14 Javascript
JavaScript改变CSS样式的方法汇总
2015/05/07 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
2016/06/09 Javascript
JS传值出现中文参数乱码的解决方法
2016/06/30 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
JS简单生成两个数字之间随机数的方法
2016/08/03 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
nodejs和react实现即时通讯简易聊天室功能
2019/08/21 NodeJs
vue使用高德地图根据坐标定位点的实现代码
2019/08/22 Javascript
[01:08:57]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第二场
2014/05/24 DOTA
Python解析网页源代码中的115网盘链接实例
2014/09/30 Python
Python遍历pandas数据方法总结
2018/02/09 Python
使用Python微信库itchat获得好友和群组已撤回的消息
2018/06/24 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
2018/10/11 Python
pandas求两个表格不相交的集合方法
2018/12/08 Python
使用pyqt5 tablewidget 单元格设置正则表达式
2019/12/13 Python
python 实现list或string按指定分段
2019/12/25 Python
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
名词解释型面试题(主要是网络)
2013/12/27 面试题
初一地理教学反思
2014/01/16 职场文书
致标枪运动员加油稿
2014/02/15 职场文书
环保志愿者活动方案
2014/08/14 职场文书
党支部活动策划方案
2014/08/18 职场文书
爱鸟护鸟的宣传语
2015/07/13 职场文书
担保书怎么写 ?
2019/04/22 职场文书
MySQL 执行数据库更新update操作的时候数据库卡死了
2022/05/02 MySQL