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+thickbox仿校内登录注册框
Jun 07 Javascript
js 自动播放的实例代码
Nov 19 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
May 20 Javascript
你真的了解BOM中的history对象吗
Feb 13 Javascript
JavaScript实现无刷新上传预览图片功能
Aug 02 Javascript
vuex学习之Actions的用法详解
Aug 29 Javascript
JavaScript简单实现合并两个Json对象的方法示例
Oct 16 Javascript
Angular实现下拉框模糊查询功能示例
Jan 03 Javascript
vue input输入框模糊查询的示例代码
May 22 Javascript
解决layui动态添加的元素click等事件触发不了的问题
Sep 20 Javascript
详解Vue的watch中的immediate与watch是什么意思
Dec 30 Javascript
jQuery+ajax实现文件上传功能
Dec 22 jQuery
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
德生9700DX电路分析
2021/03/02 无线电
php SQL防注入代码集合
2008/04/25 PHP
抓取YAHOO股票报价的类
2009/05/15 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
php解析json数据实例
2014/08/19 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
2014/08/21 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
2010/03/17 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
2011/01/31 Javascript
Jquery为a标签的href赋值实现代码
2013/05/03 Javascript
javascript 用函数语句和表达式定义函数的区别详解
2014/01/06 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
2014/04/17 Javascript
Node调试工具JSHint的安装及配置教程
2014/05/27 Javascript
jQuery实现给页面换肤的方法
2015/05/30 Javascript
jQuery+Ajax实现限制查询间隔的方法
2016/06/07 Javascript
VC调用javascript的几种方法(推荐)
2016/08/09 Javascript
js 定位到某个锚点的方法
2016/11/19 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
2017/04/13 Javascript
vue实现页面加载动画效果
2017/09/19 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
2021/01/07 Vue.js
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
python处理图片之PIL模块简单使用方法
2015/05/11 Python
Python中条件判断语句的简单使用方法
2015/08/21 Python
简单了解Python下用于监视文件系统的pyinotify包
2015/11/13 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
python分布式计算dispy的使用详解
2019/12/22 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
CSS3中伪元素::before和::after的用法示例
2017/09/18 HTML / CSS
Ootori在线按摩椅店:一家专业的按摩椅制造商
2019/04/10 全球购物
个人求职信范文分享
2013/12/13 职场文书
金融专业大学生自我评价
2014/01/09 职场文书
大学第二课堂活动总结
2014/07/08 职场文书
公务员培的训心得体会
2014/09/01 职场文书
2016高考冲刺决心书
2015/09/23 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书