我用AjaxFileUpload把图片传上去了,然后返回图片的上传路径到前台标签里,为什么返回的高度宽度都是0,然后自动生成的
下面的标签也没有获取到src属性
/**
* 文件上传
* @param file
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/uploadFile.do")
public @ResponseBody Map<String,Object> uploadFile(@RequestParam(value = "apkFile") MultipartFile file,HttpServletRequest request, HttpServletResponse response) {
Map<String,Object> resMap = new HashMap<String,Object>();
//String classPath = this.getClass().getClassLoader().getResource("/").getPath();
String classPath = request.getRealPath("/");
if (file != null) {
if (file.isEmpty()) {
// 未选择文件
resMap.put("status", "未选择文件");
} else{
// 文件原名称
String originFileName = file.getOriginalFilename();
try {
//这里使用Apache的FileUtils方法来进行保存
FileUtils.copyInputStreamToFile(file.getInputStream(),
new File(classPath+uploadDir, originFileName));
resMap.put("status","ok");
resMap.put("imgUrl","../"+uploadDir+originFileName);
} catch (IOException e) {
resMap.put("status", "文件上传失败!");
e.printStackTrace();
}
}
}
return resMap;
}
这是我的controller方法
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" href="../resources/css/jquery.Jcrop.min.css" type="text/css" />
<!-- <script src="../resources/js/common/jquery-1.11.3.js" type="text/javascript"></script> -->
<script src="http://edge1u.tapmodo.com/global/js/jquery.min.js"></script>
<script src="../resources/js/common/ajaxfileupload.js" type="text/javascript"></script>
<script src="../resources/js/fileupload.js" type="text/javascript"></script>
<script src="../resources/js/common/jquery.Jcrop.js"></script>
<title>上传头像</title>
</head>
<body>
当前用户: ${userName}
<input id="userId" value="${userId }" type="hidden" />
<div id="addApkWindows">
<div id="result"></div>
上传文件: <input type="file" id="apkFile" name="apkFile" /> <input
type="button" value="上传" onclick="ajaxFileUpload()" />
</div>
<form id="form_save" action="/user/save_portrait" style="display: none;">
<input type="hidden" id="img_left" name="left" value="0"> <input
type="hidden" id="img_top" name="top" value="0"> <input
type="hidden" id="img_width" name="width" value="0"> <input
type="hidden" id="img_height" name="height" value="0"> <input
type="hidden" id="img_rd" name="rd" value="0">
</form>
<img src="" id="target" />
</body>
</html>
这是页面代码
$(function() {
$('#target').Jcrop();
});
function ajaxFileUpload() {
//获取软件更新详情
var apkIntroduce = $("#apkInfo").val();
//开始上传文件时显示一个图片,文件上传完成将图片隐藏
//$("#loading").ajaxStart(function(){$(this).show();}).ajaxComplete(function(){$(this).hide();});
//执行上传文件操作的函数,使用encodeURI方法,防止传输中文字符的时候出现乱码
var uploadUrl = encodeURI(encodeURI("uploadFile.do?apkIntroduce="
+ apkIntroduce));
$.ajaxFileUpload({
//处理文件上传操作的服务器端地址(可以传参数,已亲测可用)
url : uploadUrl,
// url:basePath + "uploadApk.do?apkIntroduce="+apkIntroduce,
secureuri : false, //是否启用安全提交,默认为false
fileElementId : 'apkFile', //文件选择框的id属性
dataType : 'text', //服务器返回的格式,可以是json或xml等
success : function(data, status) { //服务器响应成功时的处理函数
var dataset = $.parseJSON(data);
if (dataset.status == "ok") {
$('#result').html("Apk上传成功");
$('#target').attr("src", dataset.imgUrl);
} else if (dataset.status == "parm_is_empty") {
$('#result').html("没有选择APK!");
} else {
$('#result').html('Apk上传失败,请重试!!');
}
},
error : function(data, status, e) { //服务器响应失败时的处理函数
console.log(e);
console.log(data);
$('#result').html('APK上传失败,请重试!!');
}
});
$('#target').Jcrop();
}
这是上传后的页面效果图