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第二章
Sep 30 Javascript
腾讯的ip接口 方便获取当前用户的ip地理位置
Nov 25 Javascript
基于jquery ajax 用户无刷新登录方法详解
Apr 28 Javascript
javascript面向对象包装类Class封装类库剖析
Jan 24 Javascript
javascript实现列表滚动的方法
Jul 30 Javascript
JS实现可展开折叠层的鼠标拖曳效果
Oct 09 Javascript
AngularJs bootstrap搭载前台框架——准备工作
Sep 01 Javascript
react.js 翻页插件实例代码
Jan 19 Javascript
Linux CentOS系统下安装node.js与express的方法
Apr 01 Javascript
js事件委托和事件代理案例分享
Jul 25 Javascript
详解基于vue的服务端渲染框架NUXT
Jun 20 Javascript
Vue formData实现图片上传
Aug 20 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
微信公众号实现会员卡领取功能
2017/06/08 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
实例讲解PHP验证邮箱是否合格
2019/01/28 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
仅用[]()+!等符号就足以实现几乎任意Javascript代码
2010/03/01 Javascript
javascript 进阶篇2 CSS XML学习
2012/03/14 Javascript
详解JavaScript函数绑定
2013/08/18 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
js控制文本框输入的字符类型方法汇总
2015/06/19 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
angular.bind使用心得
2015/10/26 Javascript
Jquery使用小技巧汇总
2015/12/29 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
前端面试知识点锦集(JavaScript篇)
2016/12/28 Javascript
原生JS实现垂直手风琴效果
2017/02/19 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
2017/04/20 Javascript
node.js实现的装饰者模式示例
2017/09/06 Javascript
浅谈Node框架接入ELK实践总结
2019/02/22 Javascript
[35:26]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第三局
2016/02/26 DOTA
python检测lvs real server状态
2014/01/22 Python
Python中文编码那些事
2014/06/25 Python
python操作mysql代码总结
2018/06/01 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
Python实现EXCEL表格的排序功能示例
2019/06/25 Python
基于python判断目录或者文件代码实例
2019/11/29 Python
.dcm格式文件软件读取及python处理详解
2020/01/16 Python
浅谈Python中range与Numpy中arange的比较
2020/03/11 Python
Django import export实现数据库导入导出方式
2020/04/03 Python
光声世纪笔试题目
2012/08/25 面试题
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
大学学习生活感言
2014/01/18 职场文书
安全生产知识竞赛活动总结
2014/07/07 职场文书
教育局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
人身意外保险授权委托书
2014/10/01 职场文书
岗位聘任报告
2015/03/02 职场文书