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 ...
随机推荐
- IdentityServer4 常见问题 - 用户拒绝授权后报错
1.问题说明 在 IdentityServer4 Web 授权中,一般会有一个显示客户端需要获取用户的那些信息的页面,询问用户是否同意: 在这个页面如果我们点击"No, Do Not All ...
- 项目部署到Linux上遇到的坑
作者:晨钟暮鼓c个人微信公众号:程序猿的月光宝盒 1.本地Navicat for MySQL无法连接至服务器(Centos 7 x86_64 bbr) 1045错误: 解决步骤: 1.查看用户名密 ...
- [转]UIPATH机器人指南
本文转自:https://blog.csdn.net/weixin_33957036/article/details/80907372 介绍 机器人是UiPath的执行代理,可运行Studio中内置的 ...
- Burpsuite抓取https数据包
Burpsuite抓取https包 浏览器代理设置 Burpsuite代理设置 启动Burpsuite,浏览器访问127.0.0.1:8080,点击CA Certificate,下载cacert.de ...
- OpenCV:增加和减少图像的亮度,图像的加减法
首先导包: import numpy as np import cv2 import matplotlib.pyplot as plt def show(image): plt.imshow(imag ...
- 【Gradle】Gradle插件
Gradle插件 插件的作用 把插件应用到项目中,插件会扩展项目的功能,帮助在项目构建过程中做很多事情. 1.可以添加任务到项目中,帮助完成测试.编译.打包等. 2.可以添加依赖配置到项目中,可以通过 ...
- 快速掌握Docker必备基础知识
快速掌握Docker必备基础知识 Docker是时下热门的容器技术,相信作为一名开发人员,你一定听说过或者使用过,很多人会把Docker理解为一个轻量级虚拟机,但其实Docker与虚拟机(VM)是两种 ...
- django之查询操作及开启事务
目录 聚合查询 aggregate 聚合函数 分组查询 annotate F与Q查询 F查询 Q查询 ORM操作事务 django中开启事务 聚合查询 aggregate 操作外键字段管理数据的时候, ...
- 修改robotframework的元素定位方式,使之支持带括号的xpath定位方式
今天困扰我的一个问题终于解决了 robot框架默认的xpth定位方式是不支持带括号运算的xpth表达式的,例如: (//*[@content-desc="iv_message_icon_21 ...
- 004.MongoDB数据库基础使用
一 数据库管理 1.1 创建数据库 [root@uhost ~]# mongo --host 172.24.9.225 --port 27017 -u useradmin -p useradmin & ...