<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<script src="${ctx}/jslib/uploadify/jquery.uploadify.js" type="text/javascript" charset="utf-8"></script>
<link href="${ctx}/jslib/uploadify/uploadify.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
$(function() {
//添加界面的附件管理
$("#file_upload").uploadify({
'height' : 27,
'width' : 80,
'buttonText' : '添加附件',
'queueID': 'fileQueue', //队列的ID
'queueSizeLimit':5,
'swf' : '${ctx}/jslib/uploadify/uploadify.swf',
'uploader' : '${ctx}/fileUpload/uploadFile',
'auto' : false,
'fileTypeExts' : '*.rar',
'fileObjName' : 'file',
'multi' : true,
'removeCompleted': false, //是否完成后移除序列,默认为true
'fileSizeLimit': '100MB', //单个文件大小,0为无限制,可接受KB,MB,GB等单位的字符串值
'onUploadSuccess':function(file, data, response){
var vv = data.split('|');
var bb = $("input[name=attachmentIds]").attr('value');
bb +="," + vv[0];
$("input[name=attachmentIds]").attr('value',bb);
bb = $("input[name=attachmentNames]").attr('value');
bb +="," + vv[1];
$("input[name=attachmentNames]").attr('value',bb);
//$.messager.alert("提示", "上传完毕!");
}
});
$('#documentId').combotree({
url : '${ctx}/dictionarytype/tree?code=documenttype',
parentField : 'pid',
panelHeight : 'auto',
onBeforeExpand : function(node, param) {
$('#documentId').combotree("tree").tree("options").url = "${ctx}/dictionarytype/trees?type=0&pId="
+ node.id;
}
});
$('#documentAddForm').form({
url : '${ctx}/document/add',
onSubmit : function() {
progressLoad();
var isValid = $(this).form('validate');
if (!isValid) {
progressClose();
}else{
var bb = $("input[name=attachmentIds]").attr('value');
var num = $("#file_upload").data('uploadify').queueData.queueLength;
if(bb=="" && num>0){
progressClose();
$.messager.show({
title : '提示',
msg : '<div class="light-info"><div class="light-tip icon-tip"></div><div>'
+ "您你附件还没上传,请先上传附件!"
+ '</div></div>',
showType : 'show'
});
return false;
}
}
return isValid;
},
success : function(result) {
progressClose();
result = $.parseJSON(result);
if (result.success) {
parent.$.modalDialog.openner_dataGrid.datagrid('reload');//
$.messager
.show({
title : '提示',
msg : '<div class="light-info"><div class="light-tip icon-tip"></div><div>'
+ result.msg
+ '</div></div>',
showType : 'show'
});
parent.$.modalDialog.handler.dialog('close');
}else{
parent.$.messager.alert('提示', result.msg, 'warning');
}
}
});
});
function init(){
var attachments = $("input[name=attachmentIds]").attr('value');
$("input[name=attachmentIds]").attr('value',"");
$('#file_upload').uploadify('cancel', '*');
if(attachments!=""){
$.post('${ctx}/fileUpload/deleteFile', {
attachments : attachments
}, function(result) {
}, 'json');
}
}
</script>
<div style="padding: 3px;">
<form id="documentAddForm" method="post">
<table class="grid">
<tr>
<td>标题</td>
<td colspan="3"><input name="title" type="text" placeholder="请输入字典编码" class="easyui-validatebox" data-options="required:true" style="width: 355px; height: 29px;" ></td>
</tr>
<tr>
<td>排序</td>
<td><input name="seq" value="0" class="easyui-numberspinner" style="width: 140px; height: 29px;" required="required" data-options="editable:false"></td>
<td>类别</td>
<td><select id="documentId" name="documentId" style="width: 140px; height: 29px;" data-options="required:true"></select></td>
</tr>
<tr>
<td>备注</td>
<td colspan="3"><textarea name="content" rows="5" cols="50" ></textarea></td>
</tr>
<tr>
<td>文档附件</td>
<td colspan="3">
<input name="attachmentIds" id="attachmentIds" type="hidden" class="easyui-validatebox" >
<input name="attachmentNames" id="attachmentNames" type="hidden" class="easyui-validatebox" >
<input type="file" name="file_upload" id="file_upload"/>
<a class="easyui-linkbutton" href="javascript:$('#file_upload').uploadify('upload', '*')">上传文件</a> | <a class="easyui-linkbutton" href="javascript:init()">取消上传</a>
</td>
</tr>
</table>
<div id="fileQueue" class="fileQueue"></div>
</form>
package east.mvc.controller.file;
package east.mvc.controller.file;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import east.mvc.controller.base.BaseController;
import east.mvc.framework.constant.GlobalConstant;
import east.mvc.model.base.Graph;
import east.mvc.model.sys.Tattachment;
import east.mvc.pageModel.base.Grid;
import east.mvc.pageModel.base.PageFilter;
import east.mvc.pageModel.base.SessionInfo;
import east.mvc.pageModel.sys.MapHistory;
import east.mvc.service.basic.GraphServiceI;
import east.mvc.service.sys.AttachmentServiceI;
import east.mvc.service.sys.MapHistoryServiceI;
import east.mvc.utils.StringUtil;
@Controller
@RequestMapping("/fileUpload")
public class FileUploadController extends BaseController {
private HttpServletRequest request = null;
@Autowired
private AttachmentServiceI attachmentService;
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
public String uploadFile(HttpServletRequest request, HttpServletResponse response) throws IOException {
this.request = request;
String responseStr = "";
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
// 获取前台传值
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
// String ctxPath =
// request.getSession().getServletContext().getRealPath("/")+ "\\" +
// "images\\";
String configPath = File.separator + "upload" + File.separator;
// String vv = getPhysicalPath(configPath);
// String vv2 = getPhysicalPathByRoot(configPath);
String ctxPath = request.getSession().getServletContext().getRealPath("/");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
String year = sdf.format(new Date());
configPath += year + File.separator;
sdf = new SimpleDateFormat("MM");
String month = sdf.format(new Date());
configPath += month + File.separator;
ctxPath += configPath;
// 创建文件夹
File file = new File(ctxPath);
if (!file.exists()) {
file.mkdirs();
}
String fileName = null;
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
// 上传文件名
// System.out.println("key: " + entity.getKey());
MultipartFile mf = entity.getValue();
fileName = mf.getOriginalFilename();
String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt;
responseStr = configPath + newFileName + "|" + fileName;
File uploadFile = new File(ctxPath + newFileName);
try {
FileCopyUtils.copy(mf.getBytes(), uploadFile);
} catch (IOException e) {
responseStr = "上传失败";
e.printStackTrace();
}
}
response.setHeader("Content-type", "text/html;charset=UTF-8");
// 这句话的意思,是告诉servlet用UTF-8转码,而不是用默认的ISO8859
response.setCharacterEncoding("UTF-8");
response.getWriter().write(responseStr);
return null;
}
@RequestMapping("/deleteFile")
@ResponseBody
public void getAreaIds(HttpServletRequest request, String attachments) {
if (!attachments.equals("")) {
String ctxPath = request.getSession().getServletContext().getRealPath("/");
attachments = attachments.substring(1);
String[] value = attachments.split(",");
for (int i = 0; i < value.length; i++) {
File file = new File(ctxPath + "//" + value[i]);
file.delete();
}
}
}
@RequestMapping("/downloadFile")
@ResponseBody
public void downloadFile(HttpServletRequest request, HttpServletResponse response, String attachmentId) throws Exception{
if (!attachmentId.equals("")) {
Tattachment attachment = attachmentService.gets(attachmentId);
if (attachment != null) {
String fileName = attachment.getFileName();
String filePath = attachment.getFilePath();
BufferedInputStream in = null;
BufferedOutputStream out = null;
request.setCharacterEncoding("UTF-8");
String rootpath = request.getSession().getServletContext().getRealPath("/");
try {
File f = new File(rootpath + "//" + filePath);
response.setContentType("application/x-excel");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
response.setHeader("Content-Length", String.valueOf(f.length()));
in = new BufferedInputStream(new FileInputStream(f));
out = new BufferedOutputStream(response.getOutputStream());
byte[] data = new byte[1024];
int len = 0;
while (-1 != (len = in.read(data, 0, data.length))) {
out.write(data, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
}
}
}
}
/**
* 根据传入的虚拟路径获取物理路径
*
* @param path
* @return
*/
private String getPhysicalPath(String path) {
String servletPath = this.request.getServletPath();
String realPath = this.request.getSession().getServletContext().getRealPath(servletPath);
return new File(realPath).getParent() + "/" + path;
}
/**
* 根据传入的虚拟路径获取物理路径(相对应根路径)
*
* @param path
* @return
* @author fengjx
* @date 2014年3月10日
*/
private String getPhysicalPathByRoot(String path) {
String realPath = this.request.getSession().getServletContext().getRealPath("/");
return new File(realPath).getPath() + "/" + path;
}
}
https://files.cnblogs.com/files/xsmhero/uploadify.rar