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 firefox兼容ie的dom方法脚本
May 18 Javascript
jQuery EasyUI API 中文文档 - ValidateBox验证框
Oct 06 Javascript
JavaScript语言对Unicode字符集的支持详解
Dec 30 Javascript
js实现带有介绍的Select列表菜单实例
Aug 18 Javascript
javascript伸缩菜单栏实现代码分享
Nov 12 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
Nov 01 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
Aug 27 Javascript
详解vue.js之props传递参数
Dec 12 Javascript
vue结合Echarts实现点击高亮效果的示例
Mar 17 Javascript
Vue源码分析之Vue实例初始化详解
Aug 25 Javascript
Vue.js实现大转盘抽奖总结及实现思路
Oct 09 Javascript
JavaScript原型链中函数和对象的理解
Jun 16 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 cli换行示例
2014/04/22 PHP
8个PHP程序员常用的功能汇总
2014/12/18 PHP
Symfony学习十分钟入门经典教程
2016/02/03 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
javascript 面向对象编程基础 多态
2009/08/21 Javascript
jQuery $.data()方法使用注意细节
2012/12/31 Javascript
JSON辅助格式化处理方法
2013/03/26 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
Node.js中创建和管理外部进程详解
2014/08/16 Javascript
node.js中的console.info方法使用说明
2014/12/09 Javascript
JQuery控制Radio选中方法分析
2015/05/29 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
2017/06/08 Javascript
JavaScript中立即执行函数实例详解
2017/11/04 Javascript
vue监听dom大小改变案例
2020/07/29 Javascript
react ant Design手动设置表单的值操作
2020/10/31 Javascript
用webAPI实现图片放大镜效果
2020/11/23 Javascript
[04:49]期待西雅图之战 2016国际邀请赛中国区预选赛WINGS战队赛后采访
2016/06/29 DOTA
Python中with及contextlib的用法详解
2017/06/08 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
2018/04/28 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
centos7之Python3.74安装教程
2019/08/15 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
详解anaconda安装步骤
2020/11/23 Python
南非最大的花卉和送礼服务:NetFlorist
2017/09/13 全球购物
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
介绍Ibatis的核心类
2013/11/18 面试题
Java工程师面试集锦之Spring框架
2013/06/16 面试题
工程师自我评价怎么写
2013/09/19 职场文书
法律专业自我鉴定
2013/10/03 职场文书
大学生自我鉴定
2013/12/08 职场文书
大学生党性分析材料
2014/12/19 职场文书
街道社区活动报告
2015/02/05 职场文书
2015年员工工作表现评语
2015/03/25 职场文书
争做文明公民倡议书
2019/06/24 职场文书