需求

在页面端可以在页面不刷新情况下上传多个有大小限制的word文件,并返回文件保存的路径,同时可以删除误上传的文件。

准备

    • 下载该插件
    • 该插件依赖jquery1.9.1版本(其它不清楚)
      *在jsp页面中引入样式文件和js文件
</script><link href="css/uploadfile.css" rel="stylesheet">
<script src="js/jquery1.9.1/jquery.min.js"></script>
<script src="js/jquery.uploadfile.min.js"></script>

编写jsp页面

  • 表单
<form id="newsform" method="post" action="control/news/add.action"  enctype="multipart/form-data" >
<input type="hidden" name="columnId" value="${columnId }">
<input type="hidden" name="state" id="state" >
<div id="fileuploader">上传附件</div>
</form>
    • js函数
      我是直接写在了jsp页面中
<script>
$(document).ready(function() { $("#fileuploader").uploadFile({
url:"control/news/upload.action", //后台处理方法
fileName:"myfile", //文件的名称,此处是变量名称,不是文件的原名称只是后台接收的参数
dragDrop:true, //可以取消
abortStr:"取消",
sequential:true, //按顺序上传
sequentialCount:, //按顺序上传
autoSubmit :"false", //取消自动上传
acceptFiles:"application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/msword" , //限制上传文件格式
extErrorStr:"上传文件格式不对",
maxFileCount:, //上传文件数量
maxFileSize:*, //大小限制1M
sizeErrorStr:"上传文件不能大于1M",
dragDropStr: "<span><b>附件拖放于此</b></span>",
showFileCounter:false,
returnType:"json", //返回数据格式为json
onSuccess:function(files,data,xhr,pd) //上传成功事件,data为后台返回数据
{
//将返回的上传文件id动态加入的表单中,用于提交表单时返回给后台。
var newsform = $("#newsform");
if( data.status==){
for( var i=;i<data.data.length;i++){
var inputNode='<input type="hidden" id="'+data.data[i].fileId+'" name="fileIds" value="'+data.data[i].fileId+'" >';
newsform.append(inputNode);
}
}else{
alert("上传失败");
}
},
showDelete: true,//删除按钮
statusBarWidth:,
dragdropWidth:,
//删除按钮执行的方法
deleteCallback: function (data, pd) {
var fileId=data.data[].fileId;
$.post("control/news/deleteFile.action", {fileId:fileId},
function (resp,textStatus, jqXHR) {
alert("delete ok");
//alert(textSatus);
});
//删除input标签
$("#"+fileId).remove();
pd.statusbar.hide(); //You choice.
}
});
});
</script>
/**
* 上传新闻附件
* @return
* {
* "status":1,
* "message":"ok",
* "data":[
* {"fileId":"20164225567979423"}
* {"fileId":"20164225567979423"}
* {"fileId":"20164225567979423"}
* ...
* ]
* }
*/
@RequestMapping(value="upload", method=RequestMethod.POST)
public String uploadFile(MultipartHttpServletRequest request,Model model,String name,String testName){ MyStatus status = new MyStatus();
JSONObject json= new JSONObject(); Iterator<String> iterator = request.getFileNames();
//遍历所有上传文件
JSONArray jsonArray = new JSONArray();
while (iterator.hasNext()) {
String fileName = iterator.next();
MultipartFile multipartFile = request.getFile(fileName);
String originName=multipartFile.getOriginalFilename(); //保存文件相对路径:files/
String relativedir= SiteUtils.getRelativeSavePath("news.file");
//保存文件名称
String saveFileName = WebUtils.getFileSaveName(originName);
try {
//保存文件
BaseForm.saveFile(relativedir, saveFileName, multipartFile);
//构造文件实体
NewsFile newsFile = new NewsFile();
newsFile.setOriginName(originName);
newsFile.setSaveName(saveFileName);
newsFile.setSavePath(relativedir+saveFileName);
newsFile.setExt(WebUtils.getExtFromFilename(saveFileName));
newsFile.setSize(multipartFile.getSize());
newsFileService.save(newsFile);
//构造json
JSONObject fileJson = new JSONObject();
fileJson.put("fileId", newsFile.getId());
jsonArray.add(fileJson);
} catch (Exception e) {
e.printStackTrace();
status.setStatus();
status.setMessage(e.getMessage());
break;
}
}
//返回json数据
json.put("status", status.getStatus());
json.put("message", status.getMessage());
json.put("data", jsonArray);
model.addAttribute("json", json.toString());
return SiteUtils.getPage("json");
}

编写后台删除文件方法

/**
* 删除附件记录
* @param fileId
* @return
*/
@RequestMapping(value="deleteFile")
public String deleteNewsFile(String fileId,Model model){ MyStatus status = new MyStatus();
try {
if( BaseForm.validateStr(fileId)){
newsFileService.delete(fileId);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
status.setStatus();
status.setMessage(e.getMessage());
}
JSONObject json = JSONObject.fromObject(status);
model.addAttribute("json", json.toString());
return SiteUtils.getPage("json");
}

相信很多人在刚接触前端或者中期时候总会遇到一些问题及瓶颈期,如学了一段时间没有方向感或者坚持不下去一个人学习枯燥乏味有问题也不知道怎么解决,对此我整理了一些资料 喜欢我的文章想与更多资深大牛一起讨论和学习的话 欢迎加入我的学习交流群907694362

												

jquery-uploadfile的使用(多文件异步上传)的更多相关文章

  1. JQUery利用Uploadify插件实现文件异步上传(十一)

    一:简介: Uploadify是JQuery的一个上传插件,实现的效果非常好,带进度显示 ,且Ajax异步,能一次性上传多个文件,功能强大,使用简单 1.支持单文件或多文件上传,可控制并发上传的文件数 ...

  2. 文件的上传(表单上传和ajax文件异步上传)

    项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举的主要对于小文件上传的处理! 资源下载: 一. ...

  3. 普通文件的上传(表单上传和ajax文件异步上传)

    一.表单上传: html客户端部分: <form action="upload.ashx" method="post" enctype="mul ...

  4. 文件的上传(1)(表单上传和ajax文件异步上传)

    文件的上传(表单上传和ajax文件异步上传) 项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举 ...

  5. HTML5实现图片文件异步上传

    原文:HTML5实现图片文件异步上传 利用HTML5的新特点做文件异步上传非常简单方便,本文主要展示JS部分,html结构.下面的代码并未使用第三发库,如果有参照,请注意一些未展现出来的代码片段.我这 ...

  6. js 文件异步上传 显示进度条 显示上传速度 预览文件

    通常文件异步提交有几个关键 1.支持拖拽放入文件.2.限制文件格式.3.预览图片文件.4.上传进度,速度等,上传途中取消上传.5.数据与文件同时上传 现在开始笔记: 需要一个最基础的元素<inp ...

  7. MVC文件上传04-使用客户端jQuery-File-Upload插件和服务端Backload组件实现多文件异步上传

    本篇使用客户端jQuery-File-Upload插件和服务端Badkload组件实现多文件异步上传.MVC文件上传相关兄弟篇: MVC文件上传01-使用jquery异步上传并客户端验证类型和大小  ...

  8. SpringMVC + AJAX 实现多文件异步上传

    转自:https://www.jianshu.com/p/f3987f0f471f 今天,我就这个问题来写一篇如何用 SpringMVC + AJAX 实现的多文件异步上传功能.基本的代码还是沿用上篇 ...

  9. 小程序使用 Promise.all 完成文件异步上传

    小程序使用 Promise.all 完成文件异步上传 extends [微信小程序开发技巧总结(二) -- 文件的选取.移动.上传和下载 - Kindear - 博客园 (cnblogs.com)] ...

  10. Jquery FormData文件异步上传 快速指南

    网站中文件的异步上传是个比较麻烦的问题,不过现在通过jquery 可以很容易的解决这个问题: 使用jquery2.1版本,较老版本不支持异步文件上传功能: 表单代码: <form id=&quo ...

随机推荐

  1. Python的6种内建序列之通用操作

    数据结构式通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在Python中,最基本的数据结构是序列(sequence).序列中的每 ...

  2. openstack 搭建

    #所有节点修改ip,主机名和hosts解析 controller 10.0.0.11 controller compute1 10.0.0.31 compute1 #所有节点准备本地repo源 rm ...

  3. 微信小程序跳转传参参数丢失?

    垂死病中惊坐起,笑问 Bug 何处来?! 1.先是大写字母作祟 前两天发布了「柒留言」v2.0.0 新版本,结果...你懂的嘛,没有 Bug 的程序不是好程序,写不出 Bug 的程序员不是好程序员. ...

  4. 【Gradle】Gradle插件

    Gradle插件 插件的作用 把插件应用到项目中,插件会扩展项目的功能,帮助在项目构建过程中做很多事情. 1.可以添加任务到项目中,帮助完成测试.编译.打包等. 2.可以添加依赖配置到项目中,可以通过 ...

  5. 个人项目开源之Django图书借阅系统源代码

    Django写的模拟图书借阅系统源代码已开源到码云 源代码

  6. 2019 DevOps 必备面试题——持续集成篇

    原文地址:https://medium.com/edureka/devops-interview-questions-e91a4e6ecbf3 原文作者:Saurabh Kulshrestha 翻译君 ...

  7. 小程序组件化开发框架---wepy 项目创建

    wepy是一个优秀的微信小程序组件化框架,突破了小程序的限制,支持了npm包加载以及组件化方案.这里就以我个人的经历讲下怎么创建wepy项目. 1.首先 在桌面(自己选定目录下)新建一个文件夹,注意需 ...

  8. C# JsonConvert 序列号 DateTime类型 格式多T

    序列化字符串后,值变成了"2018-02-05T00:00:00" 序列化时候 需要更改一下日期转换方式: IsoDateTimeConverter timeConverter = ...

  9. CentOS系统登陆root用户后发现提示符显示-bash-4.2#(已解决)

    问题: 在root用户下终端显示,如图所示: 尝试退出登陆root用户依然不能解决 原因: root主目录下缺失.bash_profile和.bashrc文件 Tip: /etc/profile: 此 ...

  10. 第04组 Beta冲刺(1/5)

    队名:new game 组长博客:戳 作业博客:戳 组员情况 鲍子涵(队长) 过去两天完成了哪些任务 验收游戏素材 学习Unity 2D Animation系统 接下来的计划 制作游戏需要的人物动画 ...