注:转载请标明文章原始出处及作者信息

  网上有现成的Uploadify、WebUpload等插件,自己写一个简单的(非插件).

  1.页面

  批量上传页面

  

 <form action="" id="formid">
@Html.Hidden("filelist")
<table>
<tr>
<td>
文件:
</td>
<td>
<div id="filediv" class="filediv"></div>
</td>
</tr>
<tr>
<td>
文件:
</td>
<td>
<input type="file" id="file" name="wfile" accept=".pdf" onchange="upload();" multiple="multiple" />
选择文件 <span style="padding:5px;color:red;" id="scts">未选择文件</span>
</td>
</tr>
</table>
</form>

  美化上传按钮

  

    <a href="javascript:" style="display:inline-block; width:100px;padding:5px; background:#007dce; position:relative; overflow:hidden;color:white;text-align:center;border-radius:4px;">
<input style="cursor:pointer;position:absolute; right:0; top:0; font-size:100px; opacity:0;" type="file" id="file" name="wfile" accept=".pdf" onchange="upload();" multiple="multiple" />
选择文件
</a>

  文件列表

  

 .filediv {
height: 100px;
background-color: burlywood;
overflow-x: hidden;
overflow-y: auto;
}

  2.脚本

  选择文件

  

 function upload() {
//获得已选文件集合
var fs = document.getElementById("file").files;
//元素数据
var fsarray = $("#filelist").data("data");
if (fsarray) {
//添加新选择的文件
$.each(fs, function (i, v) {
if (fsarray.indexOf(v.name) == -) {
fsarray.push(v);
$("#filediv").append("<div data-name='" + v.name + "' class='xdiv'>" + v.name + "<span onclick='delpdf(this)'>X</span></div>");
}
})
}
else {
fsarray = new Array;
$.each(fs, function (i, v) {
fsarray.push(v);
$("#filediv").append("<div data-name='" + v.name + "' class='xdiv'>" + v.name + "<span onclick='delpdf(this)'>X</span></div>");
})
//向元素附加已选择的数据
$("#filelist").data("data", fsarray);
}
$("#scts").css("color", "green").text("已选择" + fsarray.length + "个文件");
}

  删除文件

  

 function delpdf(obj) {
var ar = $("#filelist").data("data");
ar.splice(ar.indexOf("data-name"), );
$(obj).parent().remove();
$("#scts").css("color", ar.length == ? "red" : "green").text("已选择" + ar.length + "个文件");
}

  3.上传

  

   if (!$("#formid").validate().form()) return false;
var fd = new FormData($("#formid")[]);
if ($("#wfile").outerHTML) {
$("#wfile").outerHTML = $("#wfile").outerHTML;
} else {
$("#wfile").value = "";
}
for (var i = ; i < $("#filelist").data("data").length; i++) {
fd.append("filelist[]", $("#filelist").data("data")[i])
}
$.ajax({
url: "/home/ManuscriptAdd",
type: "post",
dataType: "json",
data: fd,
processData: false,
contentType: false,
success: function (data) {
if (data.state == "") {
$.jBox.tip("上传成功", "success");
window.location.reload();
}
else {
$.jBox.tip(data.content, "error");
}
},
error: function (xhr) {
$.jBox.closeTip();
}
})

  

Jquery+Aajax 批量上传的更多相关文章

  1. jquery文件批量上传控件Uploadify3.2(java springMVC)

    人比較懒  有用为主 不怎么排版了 先放上Uploadify的官网链接:http://www.uploadify.com/  -->里面能够看到PHP的演示样例,属性说明,以及控件下载地址.分f ...

  2. 基于jQuery很牛X的批量上传插件

    上传功能应该是每个网站必备的工具之一,因此出现了出现了很多各式各样的上传插件! 本文基于个人经验和使用从插件的:交互体验,易用性,文档,美观度出发,为大家推荐三款很NX的批量上传插件! 下面三款插件的 ...

  3. 带进度条的文件批量上传插件uploadify

    有时项目中需要一个文件批量上传功能时,个人认为uploadify是快速简便的解决方案. 先上效果图: 一. 下载uploadify 从官网下载uploadify的Flash版本(Flash版本免费,另 ...

  4. Mvc利用淘宝Kissy uploader实现图片批量上传附带瀑布流的照片墙

    前言 KISSY 是由阿里集团前端工程师们发起创建的一个开源 JS 框架.它具备模块化.高扩展性.组件齐全,接口一致.自主开发.适合多种应用场景等特性.本人在一次项目中层使用这个uploader组件. ...

  5. 利用uploadify+asp.net 实现大文件批量上传。

    前言 现在网上文件上传组件随便一搜都是一大堆,不过看大家一般都在用uploadify这个来上传文件.由于项目需要,我在来试了一下.因为第一次使用,也遇到了很多问题,特此记录! ------------ ...

  6. uploadify文件批量上传

    uploadify能够时间文件的批量上传,JS文件包下载地址,使用说明可以参考官网文档(http://www.uploadify.com/documentation/) 使用方法如下代码: $(&qu ...

  7. WEB版一次选择多个文件进行批量上传(Plupload)的解决方案

    WEB版一次选择多个文件进行批量上传(Plupload)的解决方案  转载自http://www.cnblogs.com/chillsrc/archive/2013/01/30/2883648.htm ...

  8. KindEditor图片批量上传

    KindEditor编辑器图片批量上传采用了上传插件swfupload.swf,所以后台上传文件方法返回格式应为JSONObject的String格式(注). JSONObject格式: JSONOb ...

  9. Mvc Kissy uploader实现图片批量上传 附带瀑布流的照片墙

    前言 KISSY 是由阿里集团前端工程师们发起创建的一个开源 JS 框架.它具备模块化.高扩展性.组件齐全,接口一致.自主开发.适合多种应用场景等特性.本人在一次项目中层使用这个uploader组件. ...

随机推荐

  1. php swoole扩展安装

    一波三折. 首先下载swoole安装包(由于我这里php是7,所以说应该去官网下载最新的swoole包,否则会发生意想不到的错误) wget https://github.com/swoole/swo ...

  2. BAT机器学习面试1000题系列(41-45题)

    41.线性分类器与非线性分类器的区别以及优劣 如果模型是参数的线性函数,并且存在线性分类面,那么就是线性分类器,否则不是.常见的线性分类器有:LR,贝叶斯分类,单层感知机.线性回归常见的非线性分类器: ...

  3. 四、Centos linux系统优化

    1.     无论是哪个版本的linux,都会提供32位和64位的两个版本的镜像. i386为32位 x86_64为64位 两者的区别: 1)目标:需要大量的内存需求的行业为64位,普通用户的需求为3 ...

  4. exec和xargs

    参考:http://www.cnblogs.com/itxdm/p/5936907.html 一. 先复习下find命令 1. name参数 find -name tom 或 find -iname ...

  5. leetcode-119-Pascal's Triangle II(生成某一行的帕斯卡三角形)

    题目描述:   Given a non-negative index k where k ≤ 33, return the kth index row of the Pascal's triangle ...

  6. poi操作Excel并修改单元格背景色

    废话不多说,直接来代码!!! 其中标红的才是重点!!! 代码中有时可以不用创建新文件, 如果报错的话可以通过创建新文件来进行操作(懒,没去找报错原因),不过原文件也会被修改. 操作之前做好备份!操作之 ...

  7. centos的 / ~ - 的意思

    . 当前目录 .. 上一层目录 - 前一个工作目录,上一次操作的目录 cd - 会切换都上次你操作的目录 ~ 当前[用户]所在的家目录/ root的根目录

  8. 洛谷 P4234 最小差值生成树(LCT)

    题面 luogu 题解 LCT 动态树Link-cut tree(LCT)总结 考虑先按边权排序,从小到大加边 如果构成一颗树了,就更新答案 当加入一条边,会形成环. 贪心地想,我们要最大边权-最小边 ...

  9. V1-bug Alpha阶段测试报告

    发现的Bug Bug现象 Bug原因 是否解决 访问到错误的视图 路由正则写的太过宽泛 是 主题太长时超过页面宽度,导致超过顶部的宽度 / 否 无法使用域名访问服务器 后端没有在配置文件的ALLOWE ...

  10. SpringBoot学习(一)

    一.Spring Boot Spring是JavaEE轻量级代替品.无需开发重量级的(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的POJO对 ...