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 相关文章推荐
JSQL 批量图片切换的实现代码
May 05 Javascript
JS无限极树形菜单,json格式、数组格式通用示例
Jul 30 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
Jun 05 Javascript
运用jQuery定时器的原理实现banner图片切换
Oct 22 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
Aug 27 Javascript
javascript对浅拷贝和深拷贝的详解
Oct 14 Javascript
jQuery焦点图轮播效果实现方法
Dec 19 Javascript
Angular 1.x个人使用的经验小结
Jul 19 Javascript
微信小程序实现原生步骤条
Jul 25 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
Aug 08 jQuery
nest.js 使用express需要提供多个静态目录的操作方法
Oct 24 Javascript
解决iView Table组件宽度只变大不变小的问题
Nov 13 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
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
在WAMP环境下搭建ZendDebugger php调试工具的方法
2011/07/18 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十一)
2014/06/25 PHP
php include类文件超时问题处理
2015/02/06 PHP
基于php实现的php代码加密解密类完整实例
2016/10/12 PHP
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
解决Laravel 不能创建 migration 的问题
2019/10/09 PHP
JQuery+CSS提示框实现思路及代码(纯手工打造)
2013/05/07 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
jquery删除指定子元素代码实例
2015/01/13 Javascript
PHP+mysql+Highcharts生成饼状图
2015/05/04 Javascript
JS+CSS实现大气清新的滑动菜单效果代码
2015/10/22 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
微信小程序之发送短信倒计时功能
2017/08/30 Javascript
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
js实现HTML中Select二级联动的实例
2018/01/05 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
[55:18]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
Python httplib,smtplib使用方法
2008/09/06 Python
Pyramid Mako模板引入helper对象的步骤方法
2013/11/27 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
Python面向对象之接口、抽象类与多态详解
2018/08/27 Python
python topk()函数求最大和最小值实例
2020/04/02 Python
Python爬虫小例子——爬取51job发布的工作职位
2020/07/10 Python
推荐一些比较有用的css3新属性
2014/11/11 HTML / CSS
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
毕业生个人求职的自我评价
2013/10/28 职场文书
经济管理专业毕业生推荐信
2013/11/11 职场文书
新员工欢迎词
2014/01/12 职场文书
国防教育标语
2014/10/08 职场文书
个人存款证明书
2014/10/18 职场文书
读后感作文评语
2014/12/25 职场文书
仓管员岗位职责
2015/02/03 职场文书
Memcached介绍及php-memcache扩展安装
2021/04/01 PHP
MYSQL 的10大经典优化案例场景实战
2021/09/14 MySQL