avt

package com.bestlinkstudio.gamef.controller;


import java.awt.Image;

import java.io.File;


import com.bestlinkstudio.bsp.user.service.UserManageService;
import com.bestlinkstudio.bsp.user.service.UserQueryService;

import java.io.FileInputStream;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
@Controller
public class UserAvatarsController extends BaseController{
private static final Log log = LogFactory.getLog("avatars");
public static final int PICTURE_HEIGHT=188;//
public static final int PICTURE_WIDTH=188;//
public static final int PICTURE_SIZE=10000000;

/**
* 注入系统图片数量
*/

private int systemAvatarsSize=0;
/**
* 注入系统头像文件夹名称
*/
private String systemFolderPath=null;
/**
* 用户上传头像文件夹名称
*
*/
private String customerFolderPath=null;
/**
* 环境变量名称
* @param systemFolderPath
*/
private String systemPath=null;

@Autowired
private UserManageService userManageService;
@Autowired
private UserQueryService userQueryService;

/*
public void setUserManageService(UserManageService userManageService) {
this.userManageService = userManageService;
}*/


public void setSystemPath(String systemPath) {
this.systemPath = systemPath;
}


public void setSystemFolderPath(String systemFolderPath) {
this.systemFolderPath = systemFolderPath;
}



public void setSystemAvatarsSize(int systemAvatarsSize) {
this.systemAvatarsSize = systemAvatarsSize;
}

@RequestMapping("/myavatars")
public String getMyAvatars() {
return "avatars";
}


/**
* 此AJAX控制器,返回所有系统图片的路径
* @param response
* @return
*/
@ResponseBody
@RequestMapping("/avatars")
public ResponseEntity<String[]> getAvatarsAddress(HttpServletRequest request ,HttpServletResponse response) {
//String realPath = request.getSession().getServletContext().getRealPath("/");
//D:\Tomcat 6.0\webapps\ROOT\
String path = null;

String[] message = new String[systemAvatarsSize];
for(int i=0;i<systemAvatarsSize;i++){
int k = i+1;
path = "avatarsread.do?pic="+systemFolderPath+"/"+k+".gif";
message[i] = path;
}

HttpHeaders hd = new HttpHeaders();
hd.setContentType(MediaType.parseMediaType("text/plain;charset=utf-8"));
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);

return new ResponseEntity<String[]>(message, hd, HttpStatus.OK);
}

/**
* 通过路径得到系统图片,返回
* @param pic
* @param response
*/
@RequestMapping("/avatarsread")
public void getAvatarsContent(String pic,HttpServletResponse response){

//String p = System.getenv(systemPath);
String p = systemPath;

String folder = pic.substring(0,pic.indexOf("/"));
//如果是pic的文件夹是系统文件夹
if(systemFolderPath.equals(folder)){
response.setContentType("image/gif");
try {
OutputStream os = response.getOutputStream();
File f = new File(p+"/"+pic);
InputStream is = new FileInputStream(f);
byte[] bs = new byte[1024];
int len;
while((len=is.read(bs))!=-1){
os.write(bs,0,len);
}
is.close();
os.close();
} catch (Exception e) {
log.error("系统错误:读取系统图片失败");
}

}
}
/**
*
* @param userId 用户ID
* @param systemPath 系统头像路径
* @param files 上传的头像
* @return
*/
@RequestMapping("/saveavatars")
public String saveAvatars(String avsystemPath , HttpServletRequest request,ModelMap mm,HttpServletResponse response){
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
//String p = System.getenv(systemPath);
String p = systemPath;
String userId = this.getLoginUser().getId();


MultipartFile file = multipartRequest.getFile("files");
//上传的文件名字
String fileName = file.getOriginalFilename();
//系统的文件名字
String systemName = getFileName(avsystemPath);
String regex = ".*\\.(jpg|jpeg|gif|bmp)$";
InputStream in=null;
if("".equals(fileName)&&"".equals(avsystemPath)){
userManageService.setUserProperty(userId, "avatar", "");
return forwardMapping("/home");
}


if("".equals(fileName)&&!"".equals(avsystemPath)){
//表明用户选择了系统头像
userManageService.setUserProperty(userId, "avatar", avsystemPath);
}else if("".equals(avsystemPath)&&!"".equals(fileName)){
//表明用户自己上传头像
if(!fileName.matches(regex)){
this.addMessage(mm, "avatar_mistake", "上传失败:文件类型错误");
return forwardMapping("/myavatars");
}else if(file.getSize()>PICTURE_SIZE || file.getSize()==0){
this.addMessage(mm, "avatar_mistake", "上传失败:上传文件尺寸错误");
return forwardMapping("/myavatars");
}else{
return saveImgAndShow(in,file,mm,p,userId,fileName);
}
}else{
//这里2个地方都有值,还是上传
return saveImgAndShow(in,file,mm,p,userId,fileName);
}
return forwardMapping("/home");
}
public String saveImgAndShow(InputStream in,MultipartFile file,ModelMap mm,String p,String userId,String fileName){
try {
in = file.getInputStream();
//BufferedImage sourceImg = javax.imageio.ImageIO.read(in);
Image srcImg = ImageIO.read(in);

int width = srcImg.getWidth(null);
int height = srcImg.getHeight(null);

if(width>PICTURE_WIDTH || height>PICTURE_HEIGHT){
this.addMessage(mm, "avatar_mistake", "上传失败:文件尺寸应该在188*188之内");
return forwardMapping("/myavatars");

}else{
//写入电脑,写入文件的id为用户id
File source = new File(p+"/"+customerFolderPath+"/"+userId+"."+(getFileType(fileName)));
file.transferTo(source);
userManageService.setUserProperty(userId, "avatar",customerFolderPath+"/"+userId+"."+(getFileType(fileName)));
return forwardMapping("/home");
}
}catch(Exception e){
this.addMessage(mm, "avatar_mistake", "系统错误,上传失败");
return forwardMapping("/myavatars");
}

}
@RequestMapping("myavatars_pic.do")
public void myavatarsPic(HttpServletResponse response){
//String p = System.getenv(systemPath);
String p = systemPath;
String userId = this.getLoginUser().getId();
String path = userQueryService.getUserExtProperty(userId, "avatar");

if(path!=null&&!"".equals(path)){
try {
outPutImg(response,p+"/"+path);
} catch (IOException e) {
log.error("系统错误:读取图片失败");
}
}else{
try {
outPutImg(response,p+"/"+systemFolderPath+"/me.jpg");
} catch (IOException e) {
log.error("系统错误:读取图片失败");
}
}

}

public void outPutImg(HttpServletResponse response,String path) throws IOException{
response.setContentType("image/gif");

OutputStream os = response.getOutputStream();
File f = new File(path);
InputStream is = new FileInputStream(f);
byte[] bs = new byte[1024];
int len;
while((len=is.read(bs))!=-1){
os.write(bs,0,len);
}
is.close();
os.close();




}


public String getFileName(String path){
return path.substring(path.lastIndexOf("/")+1,path.length());

}
public String getFileType(String path){
return path.substring(path.lastIndexOf(".")+1,path.length());
}

public void setCustomerFolderPath(String customerFolderPath) {
this.customerFolderPath = customerFolderPath;
}




}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值