@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
//@ResponseBody
public String upLoadRequest(@RequestParam(value = "file", required = false) MultipartFile file,
HttpServletRequest request,Model model)throws Exception {
Map map = new HashMap();
String fileName = request.getParameter("name")+"";
logger.info("文件名称:"+fileName);
SimpleDateFormat usdf=new SimpleDateFormat("yyyyMMddHHmmss");
//服务器上的文件以上传时间命名,方便修改名称。
String uptime=usdf.format(new Date());
String name[]=fileName.split("\.");
String newfileName=uptime+"."+name[1];
map.put("fileName", newfileName);
try{
File uploadPathFile = new File(uploadPath);
if(!uploadPathFile.exists()){
uploadPathFile.mkdirs();
}
logger.info("文件保存路径为:"+uploadPath);
FileUtils.copyInputStreamToFile(file.getInputStream(),
new File(uploadPathFile+File.separator+newfileName));
map.put("success", true);
/**
* 向数据库保存上传文件信息
//
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String mediaTime=sdf.format(new Date());
Map params = new HashMap();
params.put("mediaTitle", fileName);
params.put("mediaSrc", newfileName);
params.put("mediaDec", request.getParameter("mediaDec")+"");
params.put("mediaTime", mediaTime);
String userId="";
try { // 防中文乱码
userId = URLDecoder.decode(request.getParameter("userId"),
"UTF-8") + "";
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
};
params.put("userId", userId);*/
//HashMap<String, String> resultmap = pmosdao.saveFileMessage(params);
}catch(Exception e){
map.put("success", false);
e.printStackTrace();
}
String imgUrl = uploadPath+File.separator+newfileName;
logger.info(imgUrl);
map.put("imgurl", imgUrl);
model.addAttribute("map", map);
return "test/testfileup";
}
页面是:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!doctype html>
获取的是这个:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!doctype html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<meta name="format-detection" content="telephone=no" />
<meta charset="utf-8">
<title>文件上传</title>
</head>
<body>
<header class="second">
<b id="datestr">文件上传</b>
<a class="right text"></a>
</header>
<div class="main2">
<div class="row">
<label for="file"></label>
<input type="file" name="fileToUpload" id="fileToUpload" multiple="multiple" onchange="fileSelected();" />
</div>
<div id="fileName">
</div>
<div id="fileSize">
</div>
<div id="fileType">
</div>
<div class="row">
<input type="button" onclick="uploadFile()" value="上传" />
</div>
<div id="progressNumber">
</div>
</div>
<p id="img"><img alt="" src=""></p>
<input type="hidden" id="imgurl" value=${map.imgurl }>
</body>
<script type="text/javascript" src="../resources/js/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
var file;
var fileSize;
function fileSelected() {
file = document.getElementById('fileToUpload').files[0];
if (file) {
fileSize = 0;
if (file.size > 1024 * 1024)
fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + 'MB';
else
fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB';
document.getElementById('fileName').innerHTML = '文件名: ' + file.name;
document.getElementById('fileSize').innerHTML = '文件大小: ' + fileSize;
document.getElementById('fileType').innerHTML = '文件类型: ' + file.type;
}
}
function uploadFile() {
//var userId = window.localStorage.getItem("userId");
var fd = new FormData();
fd.append("file", document.getElementById('fileToUpload').files[0]);
fd.append("name", file.name);
fd.append("mediaDec", fileSize);
//fd.append("userId",userId);
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);
xhr.open("POST", "uploadFile",true);
xhr.send(fd);
}
function uploadProgress(evt) {
if (evt.lengthComputable) {
var percentComplete = Math.round(evt.loaded * 100 / evt.total);
document.getElementById('progressNumber').innerHTML = percentComplete.toString() + '%';
}
else {
document.getElementById('progressNumber').innerHTML = 'unable to compute';
}
}
function uploadComplete(evt) {
console.log($("#img").children());
alert($("#imgurl").val());
//$("#img").children().attr("src",evt.currentTarget.response);
alert("上传完成");
}
function uploadFailed(evt) {
alert("There was an error attempting to upload the file.");
}
function uploadCanceled(evt) {
alert("The upload has been canceled by the user or the browser dropped the connection.");
}
</script>
</html>
推荐使用json进行数据传输!
demo:
@RequestMapping(value="/toAddMonthDuty",method=RequestMethod.POST)
public @ResponseBody Map<String, Object> toAddMonthDuty(
@RequestParam(required=false,value="dscd")String dscd,
@RequestParam(required=false,value="unitId")Integer unitId,
@RequestParam(required=false,value="year")String yearStr,
@RequestParam(required=false,value="month")String monthStr,
@RequestParam(required=false,value="flag")Integer flag
){
......
List<Map<String, Object>> list2=dutyPersonInfoService.selectListByConditions(unitId, 2);
......
Map<String, Object> mapList=new HashMap<String, Object>();
mapList.put("success", true);
mapList.put("rows", jsonArray);
mapList.put("data0", list0);
mapList.put("data1", list1);
mapList.put("data2", list2);
if(flag==1){
mapList.put("title", year+"年"+dateStr.substring(5,7)+"月"+"...表");
}else{
mapList.put("title", year+"年"+dateStr.substring(5,7)+"月"+"...表");
}
return mapList;
}
把@responsebody去掉
有一个modelMap比较神奇,你可以试试
解决了 谢谢各位