需求

在页面端可以在页面不刷新情况下上传多个有大小限制的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. C#如何判断委托是实例方法还是静态方法

    一. 委托的分类 通过用什么类型的方法来声明为委托,可以分为两类: 1. 委托静态方法:把一个静态方法给委托 2. 委托实例方法:把一个实例对象的成员方法给委托 (这两个名字是博主取的,可能不是很专业 ...

  2. JavaScript 字符串是否包含某个字符串

    字符串方式 indexOf()   (推荐) var str = "123"; console.log(str.indexOf("3") != -1 ); // ...

  3. Python只读取文本中文字符

    #coding=utf-8 import re with open('aaa.txt','r',encoding="utf-8") as f: #data = f.read().d ...

  4. 搜索某个目录下所有jar包中的mapper目录下的xml文件

    rm -rf /mapper/* find /data/app/app-*/lib ! -path "*xnpush*" ! -path "*portal*" ...

  5. GPS NMEA-0183协议常用报文数据格式

    点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 整理的GPS有关的协议分析资料." 之前分析一些车载设备的流量时,有部分经验,在这里和大家分享. 产生这些流量的设备通常是实体终端 ...

  6. arcgis api 4.x for js 地图加载多个气泡窗口展示(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 4.x for js:esri 官网 api,里面详细的介绍 arcgis api 4.x 各个类 ...

  7. Pandas:DataFrame数据选择方法(索引)

    #首先创建我们的Series对象,然后合并到dataframe对象里面去 import pandas as pd import numpy as np area=pd.Series({,,,}) po ...

  8. 利用phpqrcode二维码生成类库合成带logo的二维码并且用合成的二维码生成海报(二)

    前期准备 引入phpqrcode类库(下载地址:https://download.csdn.net/download/weixin_37557729/11891240:支持彩色二维码的下载地址:htt ...

  9. GPU 编程相关 简要摘录

    GPU 编程可以称为异构编程,最近由于机器学习的火热,很多模型越来越依赖于GPU来进行加速运算,所以异构计算的位置越来越重要:异构编程,主要是指CPU+GPU或者CPU+其他设备(FPGA等)协同计算 ...

  10. 利用webpack打包自己的第一个Vue组件库

    先说一下这篇文章的诞生原因.我们有一个这样的项目,类似或者说就是一个仪表板-Dashboard,其中的各个部分可能不是一个部门写的……我们需要提供拖拽布局(大小和位置)和展示的能力.要实现这样一个功能 ...