jquery-uploadfile的使用(多文件异步上传)
需求
在页面端可以在页面不刷新情况下上传多个有大小限制的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的使用(多文件异步上传)的更多相关文章
- JQUery利用Uploadify插件实现文件异步上传(十一)
一:简介: Uploadify是JQuery的一个上传插件,实现的效果非常好,带进度显示 ,且Ajax异步,能一次性上传多个文件,功能强大,使用简单 1.支持单文件或多文件上传,可控制并发上传的文件数 ...
- 文件的上传(表单上传和ajax文件异步上传)
项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举的主要对于小文件上传的处理! 资源下载: 一. ...
- 普通文件的上传(表单上传和ajax文件异步上传)
一.表单上传: html客户端部分: <form action="upload.ashx" method="post" enctype="mul ...
- 文件的上传(1)(表单上传和ajax文件异步上传)
文件的上传(表单上传和ajax文件异步上传) 项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举 ...
- HTML5实现图片文件异步上传
原文:HTML5实现图片文件异步上传 利用HTML5的新特点做文件异步上传非常简单方便,本文主要展示JS部分,html结构.下面的代码并未使用第三发库,如果有参照,请注意一些未展现出来的代码片段.我这 ...
- js 文件异步上传 显示进度条 显示上传速度 预览文件
通常文件异步提交有几个关键 1.支持拖拽放入文件.2.限制文件格式.3.预览图片文件.4.上传进度,速度等,上传途中取消上传.5.数据与文件同时上传 现在开始笔记: 需要一个最基础的元素<inp ...
- MVC文件上传04-使用客户端jQuery-File-Upload插件和服务端Backload组件实现多文件异步上传
本篇使用客户端jQuery-File-Upload插件和服务端Badkload组件实现多文件异步上传.MVC文件上传相关兄弟篇: MVC文件上传01-使用jquery异步上传并客户端验证类型和大小 ...
- SpringMVC + AJAX 实现多文件异步上传
转自:https://www.jianshu.com/p/f3987f0f471f 今天,我就这个问题来写一篇如何用 SpringMVC + AJAX 实现的多文件异步上传功能.基本的代码还是沿用上篇 ...
- 小程序使用 Promise.all 完成文件异步上传
小程序使用 Promise.all 完成文件异步上传 extends [微信小程序开发技巧总结(二) -- 文件的选取.移动.上传和下载 - Kindear - 博客园 (cnblogs.com)] ...
- Jquery FormData文件异步上传 快速指南
网站中文件的异步上传是个比较麻烦的问题,不过现在通过jquery 可以很容易的解决这个问题: 使用jquery2.1版本,较老版本不支持异步文件上传功能: 表单代码: <form id=&quo ...
随机推荐
- Jupyter Notebook 使用小记
简介 Jupyter Notebook 是一款几乎综合所有编程语言,能够把软件代码.计算输出.解释文档.多媒体资源整合在一起的多功能科学计算平台.具有如下优点: 整合所有资源 交互性编程体验 零成本重 ...
- In .net 4.8,calculate the time cost of serialization in BinaryFormatter,NewtonSoft.json,and System.Text.Json.JsonSerializer.Serialize
using ConsoleApp390.Model; using Newtonsoft.Json; using System; using System.Collections.Generic; us ...
- linu运行级别
一.介绍 0:关机 1:单用户[找回丢失密码] 2:多用户状态[无网络服务] 3:多用户状态[有网络服务] 4:保留级别 5:图形界面 6:系统重启 二.命令行运行级别 比如说关机 init 0 三. ...
- Java操作数据库——在JDBC里使用事务
Java操作数据库——在JDBC里使用事务 摘要:本文主要学习了如何在JDBC里使用事务. 使用Connection的事务控制方法 当JDBC程序向数据库获得一个Connection对象时,默认情况下 ...
- Spring Boot + Redis实战-利用自定义注解+分布式锁实现接口幂等性
场景 不管是传统行业还是互联网行业,我们都需要保证大部分操作是幂等性的,简单点说,就是无论用户点击多少次,操作多少遍,产生的结果都是一样的,是唯一的.而今次公司的项目里,又被我遇到了这么一个幂等性的问 ...
- 松软科技web课堂:JavaScript 事件
HTML 事件是发生在 HTML 元素上的“事情”. 当在 HTML 页面中使用 JavaScript 时,JavaScript 能够“应对”这些事件. HTML 事件 HTML 事件可以是浏览器或用 ...
- PHP代码篇(六)--如何根据邀请人id查询满足条件的会员上级
说,如果有一个会员表,每一个会员都有一个邀请人from_id字段(记录该会员是谁邀请的),知道一个会员id,现在需要查询某一个会员是否是该会员的下级. 表如下: 一.当下需求 1.我们需要知道会员id ...
- Python 实现 Hangman 小游戏
Hangman--游戏简介--> 百度百科 打印Hangman def printHangman(N): # 第一行 print("\t____") # 第二行 print( ...
- [Go] protobuffer 的环境配置
一般使用gprc是需要使用protobuf作为数据传输的格式标准,可以对要传输的对象结构体进行序列化 先安装protoc,找到对应版本,下载直接把二进制文件复制到环境变量可以访问到的地方就行 http ...
- Vue动态加载图片图片不显示
图片是放在assets文件夹下的 使用require进行解决 图片不显示的原因 在webpack,将图片放在assets中,会将图片图片来当做模块来用,因为是动态加载的,所以url-loader将无法 ...