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 相关文章推荐
表单的一些基本用法与技巧
Jul 15 Javascript
JavaScript EasyPager 分页函数
May 25 Javascript
jquery Mobile入门—多页面切换示例学习
Jan 08 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
Feb 07 Javascript
动态显示可输入的字数提示还可以输入的字数
Apr 01 Javascript
ECMAScript6 新特性范例大全
Mar 24 Javascript
详解js静态资源文件请求的处理
Aug 01 Javascript
基于对象合并功能的实现示例
Oct 10 Javascript
vue下拉列表功能实例代码
Apr 08 Javascript
node.js部署之启动后台运行forever的方法
May 23 Javascript
vue侧边栏动态生成下级菜单的方法
Sep 07 Javascript
微信小程序实现页面监听自定义组件的触发事件
Nov 01 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/12/06 PHP
php将session放入memcached的设置方法
2014/02/14 PHP
php数组合并的二种方法
2014/03/21 PHP
Yii模型操作之criteria查找数据库的方法
2016/07/15 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
兼容ie和firefox js关闭代码
2008/12/11 Javascript
setTimeout 不断吐食CPU的问题分析
2009/04/01 Javascript
JQuery1.8 判断元素是否绑定事件的方法
2014/07/10 Javascript
node.js中的path.join方法使用说明
2014/12/08 Javascript
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
2015/10/28 Javascript
Angular中$compile源码分析
2016/01/28 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
浅谈js内置对象Math的属性和方法(推荐)
2016/09/19 Javascript
解析AngularJS中get请求URL出现的跨域问题
2016/12/01 Javascript
js仿百度音乐全选操作
2017/01/13 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
2017/11/08 jQuery
vue中的计算属性实例详解
2018/09/19 Javascript
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
django js 实现表格动态标序号的实例代码
2019/07/12 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
JavaScript实现秒杀时钟倒计时
2019/09/29 Javascript
python获取指定路径下所有指定后缀文件的方法
2015/05/26 Python
python中常用的九种预处理方法分享
2016/09/11 Python
Python文件和流(实例讲解)
2017/09/12 Python
Django 响应数据response的返回源码详解
2019/08/06 Python
django drf框架自带的路由及最简化的视图
2019/09/10 Python
css3 pointer-events 介绍详解
2017/09/18 HTML / CSS
CPB肌肤之钥美国官网:Clé de Peau Beauté
2017/09/05 全球购物
Tiqets荷兰:出售欧洲最美丽的景点和博物馆门票
2018/01/09 全球购物
家长会学生家长演讲稿
2013/12/29 职场文书
研讨会主持词
2014/04/02 职场文书
计划生育诚信协议书
2014/11/02 职场文书
音乐教师求职信范文
2015/03/20 职场文书
Python find()、rfind()方法及作用
2022/12/24 Python