DOM:

<form id="clueForm" class="insert-dialog" action="/xxx/xxx"method="post" enctype="multipart/form-data" target="hidFrame">
<a href="javascript:void(0)" class="uploadBtn">上传</a>
<input type="file" id="fileUpload" name="file" style="display:none"/>
<iframe id="hidFrame" name="hidFrame" style="display: none"></iframe>
</form>

注:hidden的input和iframe.

  input type设置成file,click后调起窗口选择文件。选完后数据流存在input的value中。

  hidden的iframe用于form提交后的callback。

JS:

var _file = '';

$('#fileUpload').change(function(e){
var files = e.target.files;
if(files && files.length > 0){
var reader = new FileReader();
//读取文件
reader.readAsText(files[0], "UTF-8");
//读取完文件之后会回来这里
reader.onload = function(evt){
var fileString = evt.target.result;
_file = fileString;
};
} var filename = $(this).val();
var lastIndex =filename.lastIndexOf("\\");
if(lastIndex >= 0){
filename = filename.substring(lastIndex + 1);
}
//文件名
$('XXXXXXX').val(filename);
}); // 确定button
$('#clueForm').on('click', '#uploadBtn', function(){
//data test
if(!$('#clueForm').find('.dialogUpload :file').val()){
alert('请先上传文件');
}else{
$('#clueForm').submit();
}
});
//模仿callback
document.getElementById('hidFrame').onload = function(e) {
var res = $(this.contentWindow.document.body).html();
res = JSON.parse(res);
alert(res);
};

注:input选择完文件后会触发change事件。

  reader.readAsText(files[0], "UTF-8")来读取文件。

  上传用的是form的submit,数据格式multipart/form-data。

  关于post后的callback,是通过触发form的target。target指向一个hidden的iframe,用来刷新。response会写入iframe中。

补充: 前几天(Time: 2017/04/04)看到的博客,记录 => http://www.cnblogs.com/cloudgamer/archive/2009/12/01/Quick_Upload.html

js文件上传的更多相关文章

  1. BootStrap fileinput.js文件上传组件实例代码

    1.首先我们下载好fileinput插件引入插件 ? 1 2 3 <span style="font-size:14px;"><link type="t ...

  2. js文件上传库

    收集了2个与具体UI库和框架无任何耦合的JS文件上传库:支持断点续传.支持npm安装. resumable.js fileapi

  3. Node.js 文件上传 cli tools

    Node.js 文件上传 cli tools byte stream 断点续传 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!

  4. JS文件上传神器bootstrap fileinput详解

    Bootstrap FileInput插件功能如此强大,完全没有理由不去使用,但是国内很少能找到本插件完整的使用方法,于是本人去其官网翻译了一下英文说明文档放在这里供英文不好的同学勉强查阅.另外附上一 ...

  5. js 使用jquery.form.js文件上传

    1.文件上传,使用jquery.form.js插件库 <!DOCTYPE html> <html> <head> <meta charset="UT ...

  6. 讲解开源项目:功能强大的 JS 文件上传库

    本文作者:HelloGitHub-kalifun HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...

  7. js文件上传下载组件

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 先说下要求: PC端全平台支持,要求支持Windows,Mac,Linux 支持所 ...

  8. 7款js文件上传插件

    1.  jQuery File Upload 具有多文件上传.拖拽.进度条和图像预览功能的文件上传插件,支持跨域.分块.暂停恢复和客户端图像缩放.可与任何服务端平台(如PHP.Python.Ruby ...

  9. Node.js文件上传

    Node.js express使用Multer实现文件上传html部分 <div> <h3>文件上传:</h3> 选择一个文件上传: <br/> < ...

  10. ajaxfileupload.js 文件上传

    一,前台代码. <input id="fileToUpload" type="file" size="25" name="f ...

随机推荐

  1. kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)

    问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行"随机读写"的原因是什么? 3.kafka集群consumer和producer状 ...

  2. .Net 中的反射(查看基本类型信息) - Part.2

    反射概述 和Type类 1.反射的作用 简单来说,反射提供这样几个能力:1.查看和遍历类型(及其成员)的基本信息和程序集元数据(metadata):2.迟绑定(Late-Binding)方法和属性.3 ...

  3. Web jquery表格组件 JQGrid 的使用 - 11.问题研究

    系列索引 Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引 Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数.ColModel API.事件 ...

  4. Linux硬链接和软链接

    1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [硬连接]硬连接指通过索引节点 ...

  5. SSH Junit4测试

    package test; import static org.junit.Assert.*; import java.util.List; import org.hibernate.SessionF ...

  6. postgresql:pgadmin函数调试工具安装过程

    通过安装第三方插件pldebugger,可实现在pgadmin客户端对函数设置断点.调试,具体过程如下: 1.下载pldebugger安装包:http://git.postgresql.org/git ...

  7. Private-code MaxCounter

    No need for a double cycle: : You are given N counters, initially set to 0, and you have two possibl ...

  8. CF#138 div 1 A. Bracket Sequence

    [#138 div 1 A. Bracket Sequence] [原题] A. Bracket Sequence time limit per test 2 seconds memory limit ...

  9. ahjesus Axure RP 7.0注册码

    ahjesus Axure RP 7.0注册码 用户名:axureuser 序列号:8wFfIX7a8hHq6yAy6T8zCz5R0NBKeVxo9IKu+kgKh79FL6IyPD6lK7G6+t ...

  10. Daily Scrum Meeting ——FirstDay

    一.Daily Scrum Meeting照片 二.Burndown Chart 三.项目进展 1.介绍在github上发布的issues 根据MVC三层模型,我们主要发布的是V层以及M层,C层将根据 ...