编辑头像功能
html:
<div class="modal fade" id="userImgModal" role="dialog" aria-labelledby="gridSystemModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> <h4 class="modal-title" id="gridSystemModalLabel">编辑头像</h4> </div> <div class="modal-body"> <div class="container"> <div class="imageBox pull-left"> <div class="thumbBox"></div> <div class="spinner" style="display: none">Loading...</div> </div> <div class="cropped pull-left"></div> </div> </div> <div class="modal-footer"> <input type="file" id="upload-file" class="file"> <button type="button" id="btnZoomOut" class="btn btn-primary">-</button> <button type="button" id="btnZoomIn" class="btn btn-primary">+</button> <button type="button" id="btnCrop" class="btn btn-primary">剪切</button> <button type="button" id="btnImgSubmit" class="btn btn-primary" disabled="disabled" onclick="updateUserPhoto()">保存</button> <button type="button" id="close" class="btn btn-default" data-dismiss="modal">关闭</button> </div> </div> <!-- /.modal-content --> </div> <!-- /.modal-dialog --> </div>
js:
<script type="text/javascript" src="../asset/js/cropbox.js"></script>
<script type="text/javascript">
$(function() {
var options = {
thumbBox : '.thumbBox',
spinner : '.spinner',
imgSrc : '${BASE}/asset/images/avatar.png'
};
var cropper = $('.imageBox').cropbox(options);
$('#upload-file').on('change', function() {
var reader = new FileReader();
reader.onload = function(e) {
options.imgSrc = e.target.result;
cropper = $('.imageBox').cropbox(options);
}
reader.readAsDataURL(this.files[0]);
this.files = [];
});
$('#btnCrop').on('click', function() {
var img = cropper.getDataURL();
$('.cropped').html('<img src="'+img+'" id="retImg">');
$("#btnImgSubmit").removeAttr("disabled");
});
$('#btnZoomIn').on('click', function() {
cropper.zoomIn();
});
$('#btnZoomOut').on('click', function() {
cropper.zoomOut();
});
// 输入数据到输入框启动保存按钮
$("input").keydown(function(e, previous) {
$("#save").removeAttr("disabled");
});
$("#save").click(function() {
$.post("${BASE}/iotcarveout/saveUser", {
'userId': $("#userId").val(),
'realName': $("#realName").val(),
'mailBox': $("#mailBox").val()
}, function(data) {
if (data == 'success') {
alert("保存成功");
} else {
alert("保存失败");
}
});
});
});
function updateUserPhoto(){
var name = $("#upload-file").val();
var names = name.split("\\");
name = names[names.length-1];
var imgbytes = $("#retImg").attr("src");
var userId = $("#userId").val();
$.post(getContextPath()+"/iotcarveout/modifyuserphoto", {
'name': name,
'imgbytes': imgbytes,
'userId': userId
}, function(data){
if (data != "") {
$("#imgfacecheck").attr("src", data);
// $("#facephotoaddr").val(data);
$('.cropped').html("");
$("#btnImgSubmit").attr("disabled", "disabled");
$('#userImgModal').modal("hide");
}
});
}
</script>
java:
@Action("post:/iotcarveout/modifyuserphoto")
public Data matchModifyUserPhoto(Param param) throws Exception{
long userId = param.getLong("userId");
String name = param.getString("name");
String bytes = param.getString("imgbytes");
if(name == ""){
name = "default"+Math.random()+".jpg";
}else{
name = Math.random() + name;
}
int index = bytes.indexOf("base64");
String imgbytes= bytes.substring(index + 7);
//BASE64Decoder decoder = new sun.misc.BASE64Decoder();
//byte[] bytes1 = decoder.decodeBuffer(imgbytes);
byte[] bytes1 = org.apache.shiro.codec.Base64.decode(imgbytes);
for (int i = 0; i < bytes1.length; ++i) {
if (bytes1[i] < 0) {// 调整异常数据
bytes1[i] += 256;
}
}
String fileName = ConfigHelper.getAppAssetPath() + ConfigHelper.getString(InnovateConstant.innovateRoot)
+ "users/" +userId + "/" + name;
ByteArrayInputStream bais = new ByteArrayInputStream(bytes1);
boolean isSuc = userService.updateUserPhoto(userId,name, bais, fileName);
if(isSuc) {
return new Data(fileName);
} else {
return new Data("");
}
}
测试方法:


浙公网安备 33010602011771号