Commit 36291b5d by fengshuonan

上传头像

parent 470f88ad
...@@ -27,7 +27,7 @@ public class DefaultImages { ...@@ -27,7 +27,7 @@ public class DefaultImages {
* @Date 2018/10/30 5:51 PM * @Date 2018/10/30 5:51 PM
*/ */
public static String userAvatar() { public static String userAvatar() {
return ConfigListener.getConf().get("contextPath") + "/assets/common/images/users/1.jpg"; return "data:image/jpeg;base64,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";
} }
/** /**
......
...@@ -15,13 +15,21 @@ ...@@ -15,13 +15,21 @@
*/ */
package cn.stylefeng.guns.modular.system.controller; package cn.stylefeng.guns.modular.system.controller;
import cn.stylefeng.guns.core.shiro.ShiroKit;
import cn.stylefeng.guns.core.shiro.ShiroUser;
import cn.stylefeng.guns.modular.system.model.User;
import cn.stylefeng.guns.modular.system.service.IUserService;
import cn.stylefeng.roses.core.base.controller.BaseController; import cn.stylefeng.roses.core.base.controller.BaseController;
import cn.stylefeng.roses.core.util.ToolUtil; import cn.stylefeng.roses.core.util.ToolUtil;
import cn.stylefeng.roses.kernel.model.exception.RequestEmptyException; import cn.stylefeng.roses.kernel.model.exception.RequestEmptyException;
import cn.stylefeng.roses.kernel.model.exception.ServiceException;
import cn.stylefeng.roses.kernel.model.exception.enums.CoreExceptionEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URLDecoder; import java.net.URLDecoder;
...@@ -38,6 +46,9 @@ public class SystemController extends BaseController { ...@@ -38,6 +46,9 @@ public class SystemController extends BaseController {
private String PREFIX = "/common/"; private String PREFIX = "/common/";
@Autowired
private IUserService userService;
/** /**
* 通用的树列表选择器 * 通用的树列表选择器
*/ */
...@@ -61,4 +72,30 @@ public class SystemController extends BaseController { ...@@ -61,4 +72,30 @@ public class SystemController extends BaseController {
return PREFIX + "common_tree_dlg.html"; return PREFIX + "common_tree_dlg.html";
} }
/**
* 上传头像
*
* @author fengshuonan
* @Date 2018/11/9 12:45 PM
*/
@RequestMapping("/uploadAvatar")
@ResponseBody
public Object uploadAvatar(@RequestParam String avatar) {
if (ToolUtil.isEmpty(avatar)) {
throw new RequestEmptyException("请求头像为空");
}
ShiroUser currentUser = ShiroKit.getUser();
if (currentUser == null) {
throw new ServiceException(CoreExceptionEnum.NO_CURRENT_USER);
}
User user = userService.selectById(currentUser.getId());
user.setAvatar(avatar);
userService.updateById(user);
return SUCCESS_TIP;
}
} }
...@@ -238,20 +238,20 @@ ...@@ -238,20 +238,20 @@
</div> </div>
<div class="btn-group btn-group-crop"> <div class="btn-group btn-group-crop">
<button type="button" class="btn btn-info" data-method="getCroppedCanvas" data-option="{ &quot;maxWidth&quot;: 350, &quot;maxHeight&quot;: 350 }"> <button id="uploadAvatar" type="button" class="btn btn-info" data-method="getCroppedCanvas" data-option="{ &quot;maxWidth&quot;: 100, &quot;maxHeight&quot;: 100 }">
<span class="docs-tooltip" data-toggle="tooltip" data-animation="false" title="$().cropper(&quot;getCroppedCanvas&quot;, { maxWidth: 350, maxHeight: 350 })">上传头像</span> <span class="docs-tooltip" data-toggle="tooltip" data-animation="false" title="$().cropper(&quot;getCroppedCanvas&quot;, { maxWidth: 100, maxHeight: 100 })">上传头像</span>
</button> </button>
</div> </div>
<div class="btn-group btn-group-crop"> <div class="btn-group btn-group-crop">
<button type="button" class="btn btn-info" data-method="getCroppedCanvas" data-option="{ &quot;width&quot;: 160, &quot;height&quot;: 90 }"> <button type="button" class="btn btn-info" data-method="getCroppedCanvas" data-option="{ &quot;width&quot;: 200, &quot;height&quot;: 200 }">
<span class="docs-tooltip" data-toggle="tooltip" data-animation="false" title="$().cropper(&quot;getCroppedCanvas&quot;, { width: 160, height: 90 })"> <span class="docs-tooltip" data-toggle="tooltip" data-animation="false" title="$().cropper(&quot;getCroppedCanvas&quot;, { width: 200, height: 200 })">
160&times;90 200&times;200
</span> </span>
</button> </button>
<button type="button" class="btn btn-info" data-method="getCroppedCanvas" data-option="{ &quot;width&quot;: 320, &quot;height&quot;: 180 }"> <button type="button" class="btn btn-info" data-method="getCroppedCanvas" data-option="{ &quot;width&quot;: 300, &quot;height&quot;: 300 }">
<span class="docs-tooltip" data-toggle="tooltip" data-animation="false" title="$().cropper(&quot;getCroppedCanvas&quot;, { width: 320, height: 180 })"> <span class="docs-tooltip" data-toggle="tooltip" data-animation="false" title="$().cropper(&quot;getCroppedCanvas&quot;, { width: 300, height: 300 })">
320&times;180 300&times;300
</span> </span>
</button> </button>
</div> </div>
......
$(function () { $(function () {
'use strict'; 'use strict';
var console = window.console || { log: function () {} }; var console = window.console || {
log: function () {
}
};
var URL = window.URL || window.webkitURL; var URL = window.URL || window.webkitURL;
var $image = $('#image'); var $image = $('#image');
var $download = $('#download'); var $download = $('#download');
...@@ -166,13 +169,7 @@ $(function () { ...@@ -166,13 +169,7 @@ $(function () {
case 'getCroppedCanvas': case 'getCroppedCanvas':
if (result) { if (result) {
// Bootstrap's Modal
$('#getCroppedCanvasModal').modal().find('.modal-body').html(result); $('#getCroppedCanvasModal').modal().find('.modal-body').html(result);
if (!$download.hasClass('disabled')) {
download.download = uploadedImageName;
$download.attr('href', result.toDataURL(uploadedImageType));
}
} }
break; break;
...@@ -197,6 +194,23 @@ $(function () { ...@@ -197,6 +194,23 @@ $(function () {
} }
}); });
//绑定上传的操作
$download.on('click', function () {
var data = $("#uploadAvatar").data();
var result = $image.cropper(data.method, data.option, data.secondOption);
var imgBase = result.toDataURL('image/jpeg');
var requestData = {avatar: imgBase};
var ajax = new $ax(Feng.ctxPath + "/system/uploadAvatar", function (data) {
window.parent.Feng.success("上传成功!");
$("#getCroppedCanvasModal").modal('hide');
}, function (data) {
window.parent.Feng.error("上传失败!" + data.responseJSON.message + "!");
});
ajax.set(requestData);
ajax.start();
});
// Keyboard // Keyboard
$(document.body).on('keydown', function (e) { $(document.body).on('keydown', function (e) {
if (e.target !== this || !$image.data('cropper') || this.scrollTop > 300) { if (e.target !== this || !$image.data('cropper') || this.scrollTop > 300) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment