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脚本实现Web页面信息交互
Dec 21 Javascript
javscript对象原型的一些看法
Sep 19 Javascript
js中有关IE版本检测
Jan 04 Javascript
jquery删除提示框弹出是否删除对话框
Jan 07 Javascript
js图片延迟技术一般的思路与示例
Mar 20 Javascript
总结几道关于Node.js的面试问题
Jan 11 Javascript
jQuery动态移除和添加背景图片的方法详解
Mar 07 Javascript
vue实现移动端图片裁剪上传功能
Aug 18 Javascript
node.js 发布订阅模式的实例
Sep 10 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
Sep 19 jQuery
vue组件表单数据回显验证及提交的实例代码
Aug 30 Javascript
详解vue路由篇(动态路由、路由嵌套)
Jan 27 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实现MVC开发得最简单的方法――模型
2007/04/10 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
2016/06/15 PHP
php多进程模拟并发事务产生的问题小结
2018/12/07 PHP
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
2019/06/08 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
2019/10/16 PHP
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
jQuery添加和删除指定标签的方法
2015/12/16 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
Bootstrap入门教程一Hello Bootstrap初识
2017/03/02 Javascript
mui框架 页面无法滚动的解决方法(推荐)
2018/01/25 Javascript
JavaScript实现的DOM树遍历方法详解【二叉DOM树、多叉DOM树】
2018/05/07 Javascript
深入浅析JS中的严格模式
2018/06/04 Javascript
详解浏览器缓存和webpack缓存配置
2018/07/06 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
Vue最新防抖方案(必看篇)
2019/10/30 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
python文件和目录操作方法大全(含实例)
2014/03/12 Python
Python中的列表生成式与生成器学习教程
2016/03/13 Python
python提取包含关键字的整行数据方法
2018/12/11 Python
PyQt5显示GIF图片的方法
2019/06/17 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
canvas版人体时钟的实现示例
2021/01/29 HTML / CSS
西班牙香水和化妆品网上商店:Douglas
2017/10/29 全球购物
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
创先争优制度
2014/01/21 职场文书
秘书英文求职信范文
2014/01/31 职场文书
课程设计的心得体会
2014/09/03 职场文书
个人向公司借款协议书
2014/10/09 职场文书
营销计划书范文
2015/01/17 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书
灵魂歌王观后感
2015/06/17 职场文书
《七律·长征》教学反思
2016/02/16 职场文书
为什么说餐饮很难做,是因为你不了解这些新规则
2019/08/20 职场文书
HTML5 语义化标签(移动端必备)
2021/08/23 HTML / CSS