前端JS只允许读取文件,出于安全考虑JS并不允许修改、删除本地文件。那么JS如何读取选择的文件内容呢?

标签: 上传

JS读取文件的关键代码或步骤:this.files、new FileReader()、readAsText、this.result、new XMLHttpRequest()

选择文件后的效果截图

HTML代码

JAVASCRIPT代码

/**

* Created by Administrator on 2016-09-28.

*/

document.getElementById('mySelect').onchange =function(){

//var file = $(this).prop('files')[0]; //Blob二进制对象

varfile =this.files[0];

if(file){

varreader =newFileReader();

reader.readAsText(file,'GBK');//读取文件内容, 注意编码格式: 如果乱码则换成UTF-8

reader.onload = function(e){

vartext =this.result;//e.target.result

varsDataXHR = {

requestURL:'/api/upload',

requestMethod:'POST',

requestData:text,

succeedHtml:'',

failedHtml:''

};

XMLHttpRequestFn(sDataXHR); //向后台发送

}

}

};

functionXMLHttpRequestFn(sData){

varrequestMethod = sData.requestMethod,//POST、GET..

requestURL = sData.requestURL, //请求的地址

requestData = sData.requestData, //待发送的数据

succeedHtml = sData.succeedHtml, //成功提示信息

failedHtml = sData.failedHtml; //失败提示信息

varxhr =newXMLHttpRequest();

//var xhr = new ActiveXObject("Microsoft.XMLHTTP");//针对IE5、IE6

xhr.open(requestMethod, requestURL,true);

xhr.overrideMimeType("application/octet-stream");//数据以流的形式上传(非必须)

xhr.send(requestData);

xhr.onreadystatechange = stateChangeFn;

functionstateChangeFn(){

if(xhr.readyState == 4){//0->1->2->3->4的过程

if(xhr.status == 200){//不管是GET还是POST都返回200

//console.log(xhr.response);//{"code":1,"message":""}

if(succeedHtml)

AjaxDialogTips(succeedHtml,0,3);

}else{

if(failedHtml)

AjaxDialogTips(failedHtml,3,3);

}

}

}

}

什么是XMLHttpRequest?

XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,包括做出POST和HEAD请求以及普通的GET请求的能力。

XMLHttpRequest 可以同步或异步地返回 Web 服务器的响应,并且能够以文本或者一个 DOM 文档的形式返回内容。

尽管名为 XMLHttpRequest,它并不限于和 XML 文档一起使用:它可以接收任何形式的文本文档。

XMLHttpRequest 对象是名为 AJAX 的 Web 应用程序架构的一项关键功能。

所有现代浏览器 (IE7+、Firefox、Chrome、Safari 以及 Opera) 都内建了 XMLHttpRequest 对象。

任何 W3C 推荐标准均未规定 XMLHttpRequest 对象,即XMLHttpRequest对象目前还不是W3C的标准,但是 W3C 已经开始了标准化的工作。

有关XMLHttpRequest对象的详细介绍,大家可以参考W3SCHOOL:http://www.w3school.com.cn/xmldom/dom_http.asp

XMLHttpRequest对象的返回值

输出XMLHttpRequest对象的返回值:

onabort:null

onerror: null

onload: null

onloadend: null

onloadstart: null

onprogress: null

onreadystatechange: null

ontimeout: null

readyState: 4

response: "{"code":1,"message":""}"

responseText: "{"code":1,"message":""}"

responseType: ""

responseURL: "http://rd.drugcloud.net/api/mi/druginfo/upload"

responseXML: null

status: 200

statusText: "OK"

timeout: 0

file js new 传到后台_JS读取文件且AJAX传输到后台相关推荐

  1. JS获取input框用户输入信息作为数组存储传输给后台数据库操作存储方法

    JS获取input框用户输入信息作为数组存储传输给后台数据库操作存储方法 获取input框用户输入信息数组存储 var datas = {Id: idData.id,OrderDetailCode: ...

  2. node.js fs.open 和 fs.write 读取文件和改写文件

    Node.js的文件系统的Api //公共引用 var fs = require('fs'), path = require('path'); 1.读取文件readFile函数 //readFile( ...

  3. java 图片分段上传_java实现分段读取文件并通过HTTP上传的方法

    本文实例讲述了java实现分段读取文件并通过HTTP上传的方法.分享给大家供大家参考.具体如下: 1.首先将文件分段,用RandomAccessFile 2.分段后将分出的内容上传到http URL ...

  4. ajax读取文件数据,Ajax 实现读取 properties 格式资源文件数据

    Ajax 的核心是 JavaScript 对象 XmlHttpRequest.该对象在 Internet Explorer 5 中首次引入,它是一种支持异步请求的技术.简而言之,XmlHttpRequ ...

  5. js bind 传参、_js中的面向对象(一)

    面向对象要解决的问题 提到面向对象,大家的第一反应就是封装.继承和多态.对其做如下解释: 封装:影藏细节(A对A--将多行代码取个名字或A对B--API调用合作) 继承:继承的意思就是同上跟上述一样, ...

  6. js onclick传参对象_js中onClick([object object])的传参问题。跪求!

    你的位置: 问答吧 -> JavaScript -> 问题详情 js中onClick([object object])的传参问题.跪求! 问题是这样的,看代码 for(var i=0;i ...

  7. ssh2 文件服务器,使用Node.js和SSH2从SFTP服务器读取文件

    当我在文件上使用readdir时,文件的大小是正确的. 使用FTP(JSFTP)对我的开发FTP服务器使用上面相同的技术工作得很好. 醇> 任何建议表示赞赏! 这是我的代码: var Clien ...

  8. php后台登录页修改成ajax,使用php后台给自己做一个页面路由,配合ajax实现局部刷新。(示例代码)...

    今天就要放假了,把近来囤积的小玩意儿总结整理一下. 在请求一个html页面来嵌入到当前页会有一个问题,就是跟随请求过来的html他的样式表和脚本会失效.是因为文档加载的先后顺序等问题造成的.因此,加载 ...

  9. Promise(一)介绍、fs读取文件、AJAX请求

    Promise 一.promise介绍与基本使用 1.promise是什么 1.1 抽象表达 1)Promise是一门新的技术(ES6规范) 2)Promise是JS中进行异步编程的新解决方案(ps: ...

  10. node.js:fs.open 和 fs.write 读取文件和改写文件

    node.js fs.open 和 fs.write 读取文件和改写文件 Node.js的文件系统的Api //公共引用 var fs = require('fs'), path = require( ...

最新文章

  1. 如何在浏览器上跑深度学习模型?并且一行JS代码都不用写
  2. Zabbix5.0监控系统安装详解
  3. 使用T-SQL导入多个文件数据到SQL Server中一文的疑惑
  4. Python 技术篇-利用pyqt5库监听剪切板变动,clipboard.dataChanged.connect()剪切板监听
  5. 什么是informer机制
  6. 【shell】shuf命令,随机排序
  7. How UI5 and FIORI deliver central Javacript library code MIME
  8. 事件总线(Event Bus)知多少
  9. ssh sftp 免密码 公钥登录
  10. Visual Studio Code 前端调试不完全指南
  11. 稀疏矩阵的压缩存储--十字链表(转载)
  12. 基于MaxCompute的拉链表设计
  13. numpy二维数组改变某些数_机器学习:Python常用库——Numpy库
  14. 腾讯AI让二子,柯洁还是输了
  15. 标签生成html怎么转换,如何进行HTML到XML转换以生成封闭标签?
  16. 游戏开发unity杂项知识系列:Failed to resolve project template:Failed to decompress
  17. Coursera | Introduction to Data Science in Python(University of Michigan)| Assignment3
  18. 李宏毅机器学习作业6-使用GAN生成动漫人物脸
  19. 从包工头到程序猿(三)味道
  20. 宿迁学院计算机二级必须要过吗,宿迁学院四级没过能拿到学位证书吗

热门文章

  1. 大写金额用计算机简单些,大写一到十怎么写 数字一到十的大写怎么写(开票用的大写)...
  2. Quartz配置文件quartz.properties加载
  3. 全国大学生数学建模2016年A题系泊系统的设计论文与代码
  4. myeclipse安装使用svn
  5. AGV机器人RFID传感器CK-G06A与西门子1200PLC应用手册
  6. 数据库连接池Spring JDBC(JdbcTemplate)
  7. C3P0连接池的使用
  8. [个人自用,全网最优]EDEM-FLUENT个人自学教程,拒绝手忙脚乱无用功!
  9. 力软敏捷开发平台源码7.0.6
  10. 单片机开发软件keil4和proteus的使用教程(超详细)_☆往事随風☆的博客