fileInput插件上传文件
一.ftl
<form action="" method="post" name="form" id="form">
<div class="m-solbox m-solbox-3">
<div style="margin-left:180px">
<table style="border-collapse: separate;border-spacing: 10px;font-size: 14px;">
<tr>
<td>版本:
<input type="hidden" name="id" value="" >
</td>
</tr>
<tr>
<td>上传附件:</td>
<td>
<input id="uploadFile" type="file" name="fileName" multiple />
</td>
</tr>
<#if files??>
<tr>
<td>已有附件:</td>
<td>
<#escape x as x!"">
<#list files as fileName >
<span>
<a href="${filePaths[fileName_index]}">${fileName}</a>
<a href="###" title="删除" onclick='deleteFile(this,"${fileName}")'>
<img src="/img/nav/Trash_Delete.png" style="border: none">
</a>
</span>
</#list>
</#escape>
</td>
</tr>
</#if>
</table>
</div>
</div>
</form>
引入文件:
<link href="/css/flash/fileinput.css" media="all" rel="stylesheet" type="text/css" />
<script src="/js/base/fileinput.js" type="text/javascript"></script>
二.js : proReports.js
$(document).ready(function(){
initFileInput("uploadFile");
});
function initFileInput(ctrlName) {
var control = $('#' + ctrlName);
control.fileinput({
uploadUrl: '/file/uploadFile',
language: "zh",
//showUpload: false, //是否显示上传按钮
dropZoneEnabled: false, //是否显示拖拽区域
enctype: 'multipart/form-data',
uploadExtraData: { //上传的时候,增加的附加参数
"projectId": $("#project_id").val(),
"versionId": $("#versionId").val(),
"fea": $("#fea").val()
}
})//文件上传完成后的事件
.on('fileuploaded', function (event, data, previewId, index) {
var response = data.response;
//alert(response.msg);
window.location.reload();
});
}
function deleteFile(obj,deleteFile){
if(confirm('确认要删除么?')){
$.ajax({
type: 'POST',
url: '/pro/deleteFile',
data:{
"projectId": $("#project_id").val(),
"versionId": $("#versionId").val(),
"fea": $("#fea").val(),
"deleteFile":deleteFile,
},
cache:false,
dataType : "json",
success: function(data){
if(data.msg=="删除失败"){
alert(data.msg);
}else{
$(obj).parent().remove();
}
}
});
}
}
三.上传文件的controller :ProEmailAttachmentController
@RequestMapping(value="/file/uploadFile",method = RequestMethod.POST)
public @ResponseBody Map<String, Object> uploadFile(@RequestParam("fileName") MultipartFile[] file,HttpServletRequest request) throws Exception{
String projectIdStr = request.getParameter("projectId");
Integer projectId = Integer.valueOf(projectIdStr);
String fea = request.getParameter("fea");
String versionIdStr=request.getParameter("versionId");
Integer versionId = Integer.valueOf(versionIdStr);
String msg = "";
try {
//上传
String path = Thread.currentThread().getContextClassLoader().getResource("").getPath();
path=path+"folderPath.properties";
Properties prop = new Properties();
prop.load(new FileInputStream(path));
String uploadPath =prop.getProperty("UploadMailPath")+"/"+projectId+"/"+fea+"/"+versionId;
for (int i = 0; i < file.length; i++) {
if (!file[i].isEmpty()) {
// 文件名称
File targetFile = new File(uploadPath, file[i].getOriginalFilename());
if (!targetFile.exists()){
targetFile.mkdirs();
}
file[i].transferTo(targetFile);
}
}
} catch (Exception e) {
e.printStackTrace();
logger.info(e.getMessage());
msg = "上传失败!";
}
Map<String, Object> map = new HashMap<String, Object>();
map.put("msg", msg);
map.put("code", 200);
return map;
}
@RequestMapping(value="/pro/deleteFile",method = RequestMethod.POST)
public @ResponseBody Map<String, Object> deleteFile(HttpServletRequest request) throws Exception{
String projectIdStr = request.getParameter("projectId");
Integer projectId = Integer.valueOf(projectIdStr);
String fea = request.getParameter("fea");
String versionIdStr=request.getParameter("versionId");
Integer versionId = Integer.valueOf(versionIdStr);
String deleteFile=request.getParameter("deleteFile");
String msg = "";
try {
//上传
String path = Thread.currentThread().getContextClassLoader().getResource("").getPath();
path=path+"folderPath.properties";
Properties prop = new Properties();
prop.load(new FileInputStream(path));
String uploadPath =prop.getProperty("UploadMailPath")+"/"+projectId+"/"+fea+"/"+versionId;
File targetFile = new File(uploadPath, deleteFile);
if (targetFile.exists()){
targetFile.delete();
}
} catch (Exception e) {
e.printStackTrace();
logger.info(e.getMessage());
msg = "删除失败!";
}
Map<String, Object> map = new HashMap<String, Object>();
map.put("msg", msg);
map.put("code", 200);
return map;
}
4.获取文件的Controller :ProReportController
@RequestMapping(value = "/pro/report", method = RequestMethod.GET)
public String home(HttpServletRequest request, Model model) throws FileNotFoundException, IOException {
String projectIdStr = request.getParameter("projectId");
Integer projectId = Integer.valueOf(projectIdStr);
model.addAttribute("productId", projectId);
Project project = systemService.getProjectByProjectId(projectId);
List<Version> versionList = systemService.getVersionByProjectId(projectId);
FeatureEmail featureEmail = this.featureEmailMngr.getFeatureEmailByProductIdAndFea(projectId, "0");
String[] checkEmails = null;
if(featureEmail != null && !CheckUtils.isNullOrBlank(featureEmail.getCheckEmail())) {
checkEmails = featureEmail.getCheckEmail().split(",");
}
String user = this.authService.getCookieParameter(request, "token","userid").split(" ")[0];
model.addAttribute("user", user);
// 处理邮件主题
StringBuffer subject=new StringBuffer();
subject.append("【请阅:PDU一部产品与解決方案测试部】");
subject.append(project.getName().split("-")[0]+" ");
subject.append("产品测试报告");
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
subject.append("("+df.format(new Date())+")");
model.addAttribute("subject", subject);
if (CheckUtils.isNullOrBlank(versionList)){
model.addAttribute("isFind", new Boolean(false));
return "/productkanban/report";
}else {
model.addAttribute("isFind", new Boolean(true));
}
model.addAttribute("featureEmail", featureEmail);
model.addAttribute("checkEmails", checkEmails);
//处理已有附件
String path = Thread.currentThread().getContextClassLoader().getResource("").getPath();
path=path+"folderPath.properties";
Properties prop = new Properties();
prop.load(new FileInputStream(path));
String uploadPath =prop.getProperty("UploadMailPath")+"/"+projectId+"/0/"+versionId;
File destDir = new File(uploadPath);
if (destDir.exists()) {
List<String> files = FileUtils.getFile(uploadPath);
if(!CheckUtils.isNullOrBlank(files)){
List<String> filePaths = new ArrayList<String>();
for(String fileName:files){
filePaths.add(prop.getProperty("UploadMailURL")+"/"+projectId+"/0/"+versionId+"/"+fileName);
}
model.addAttribute("files", files);
model.addAttribute("filePaths", filePaths);
}
}
return "/productkanban/report";
}
fileInput插件上传文件的更多相关文章
- Extjs 使用fileupload插件上传文件 带进度条显示
一.首先我们看看官方给出的插件的解释: 一个文件上传表单项具有自定义的样式,并且可以控制按钮的文本和 像文本表单的空文本类似的其他特性. 它使用一个隐藏的文件输入元素,并在用户选择文件后 在form提 ...
- 用jquery uploadify上传插件上传文件
public void ProcessRequest(HttpContext context) { string esOIDs = System.Web.HttpContext.Current.Req ...
- 后台使用Spring MVC 4.15 版本 通过 ajaxFileUpload plugin插件上传文件相应时引起的一个小问题,Chrome、Firefox中出现SyntaxError:unexpected token <
html: 使用ajaxFileUpload插件做文件上传时,后台返回json格式的数据,js代码如下: 接下来,把结果错误信息打印出来: 先在网上找了下解决办法方案,stackoverflow上有说 ...
- 使用SWFUpload插件上传文件
演示代码由两部分组成,包括前台文件和后台文件: 1.前台文件index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transi ...
- 《五》uploadify插件上传文件
下载地址:http://www.uploadify.com/wp-content/uploads/files/uploadify.zip 相关配置:http://www.uploadify.com/d ...
- ajaxFileUpload插件上传文件 返回 syntaxError :unexpected token
Html 代码<table id="deploy_application" class="bordered-table"> <tr> & ...
- ajaxFileUpload上传文件简单示例
写在前面: 上传文件的方式有很多,最近在做项目的时候,一开始也试用了利用jquery的插件ajaxFileUpload来上传大文件,下面,用一个上传文件的简单例子,记录下,学习的过程~~~ 还是老样子 ...
- php 应用 bootstrap-fileinput 上传文件 插件 操作的方法
//先加载插件所需要的 js .css 文件 <link href="css/fileinput.css" rel="stylesheet" type=& ...
- bootstrap-fileinput上传文件的插件使用总结----编辑已成功上传过的图片
http://plugins.krajee.com/file-plugin-methods-demo 具体操作 http://plugins.krajee.com/file-preview-manag ...
随机推荐
- celery 定时任务
用celery定时任务,定时删除文件夹 tasks.py from celery import Celery import os import shutil app = Celery('demo') ...
- windows入侵
一, ping 用来检查网 络是否通畅或者网络连接速度的命令.作为一个生 活在网络上的管理员或者黑 客来说, ping 命令是第一个必须掌握的 DOS 命令,所利用的原理是这样的网络上的机器都有唯一确 ...
- HTTP1.0 、1.1
网上有很多资料说明这个,但都很长的,觉得东西太多也记不住,就记点东西,权当笔记. HTTP 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一 ...
- Teradata的profile使用
1.proflie优势 使用profile可以批量管理用户参数,尤其是在一批用户具有相同的参数配置时,十分便捷. 2.profile可配置用户参数 [Account id][Default datab ...
- DP 魔族密码 LIS
题目描述 风之子刚走进他的考场,就…… 花花:当当当当~~偶是魅力女皇——花花!!^^(华丽出场,礼炮,鲜花) 风之子:我呕……(杀死人的眼神)快说题目!否则……-_-### 花花:……咦好冷我们现在 ...
- 设计模式のInterpreter Patern(解释器模式)----行为模式
一.问题产生背景 有一句话“小明和小龙是好朋友”,我想分析其中谁是人,我想分析他们的关系等多种需求,那么我们应该如何处理,如果为每一个关系都进行判断?显然不合适,我们可以将二者的关系进行抽象处理,然后 ...
- apache和nginx结合使用
1 有时候我们希望将nginx和apache结合起来使用,nginx接受用户的请求,作为请求转发服务器,apache作为后端服务器. 2 配置如下 nginx 中将80端口的请求转发到8000端口上 ...
- 【转】实践HTTP206状态:部分内容和范围请求
原文:http://www.cyberciti.biz/cloud-computing/http-status-code-206-commad-line-test/ HTTP 2xx范围内的状态码表明 ...
- 模拟祭-比萨-题解O(n)
题目描述 233233 [ 233 ] ( 233 ) KikokKikok 得到了一块比萨,他迫不及待地想与妹妹 Kik子和 koko美一同享用它. 比萨是一种圆形的食物.为了将它分给三个人,Kik ...
- Java NIO:IO与NIO的区别
一.概念 NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多.在Java API中提供了两套N ...