yujian
2019-05-23 418678a2f6eeeb9de97795a26277d7c5c64c282d
用户头像压缩200x200
2个文件已修改
71 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserInfoController.java 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoServiceImpl.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserInfoController.java
@@ -1,6 +1,11 @@
package com.yeshi.fanli.controller.client.v1;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.InvocationTargetException;
@@ -16,6 +21,7 @@
import java.util.UUID;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.beanutils.PropertyUtils;
@@ -100,6 +106,7 @@
import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService;
import com.yeshi.fanli.util.AESUtil;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.FileUtil;
import com.yeshi.fanli.util.GsonUtil;
import com.yeshi.fanli.util.HongBaoUtil;
import com.yeshi.fanli.util.RedisManager;
@@ -118,6 +125,8 @@
import com.yeshi.fanli.vo.user.UserInfoExtraVO;
import com.yeshi.fanli.vo.user.UserSettingsVO;
import net.coobird.thumbnailator.Thumbnails;
import net.coobird.thumbnailator.Thumbnails.Builder;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@@ -2171,27 +2180,37 @@
                out.print(JsonUtil.loadFalseResult("用户未登录"));
                return;
            }
            if (file == null) {
                out.print(JsonUtil.loadFalseResult("上传文件不能为空"));
                return;
            }
            
            long fileSize = file.getSize() / 1024 + 1;
            if (fileSize > 200) {
                out.print(JsonUtil.loadFalseResult("上传文件不能大于200kb"));
                return;
            }
            userInfoService.uploadPortrait(file, uid);
            out.print(JsonUtil.loadTrueResult("保存成功"));
        } catch (UserInfoException e) {
            out.print(JsonUtil.loadFalseResult(e.getMsg()));
            e.printStackTrace();
            try {
                LogHelper.errorDetailInfo(e);
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        } catch (IOException e) {
            out.print(JsonUtil.loadFalseResult("图片上传失败失败"));
            e.printStackTrace();
            try {
                LogHelper.errorDetailInfo(e);
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        } catch (Exception e) {
            out.print(JsonUtil.loadFalseResult("保存失败"));
            e.printStackTrace();
            try {
                LogHelper.errorDetailInfo(e);
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        }
    }
    
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoServiceImpl.java
@@ -1,5 +1,6 @@
package com.yeshi.fanli.service.impl.user;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
@@ -25,6 +26,7 @@
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.yeshi.utils.FileUtil;
import org.yeshi.utils.HttpUtil;
import org.yeshi.utils.NumberUtil;
import org.yeshi.utils.tencentcloud.COSManager;
@@ -63,6 +65,8 @@
import com.yeshi.fanli.util.account.UserUtil;
import com.yeshi.fanli.util.wx.WXLoginUtil;
import com.yeshi.fanli.vo.user.UserInfoVO;
import net.coobird.thumbnailator.Thumbnails;
@Service
public class UserInfoServiceImpl implements UserInfoService {
@@ -927,25 +931,30 @@
            throw new UserInfoException(1, "用户不存在");
        }
        
        String portrait = userInfo.getPortrait();
        if (portrait != null && portrait.trim().length() > 0 && portrait.contains("/img/user/")) {
            COSManager.getInstance().deleteFile(portrait);
        // 谷歌压缩图片
        String targetPath = FileUtil.getCacheDir() + "/uploadPortrait_" + uid + "_" + System.currentTimeMillis() + ".jpg";
        Thumbnails.of(file.getInputStream()).size(200, 200).toFile(targetPath);
        // 执行上传
        String filePath="/img/user/" + UUID.randomUUID().toString().replace("-", "") + ".jpg";
        String fileLink= COSManager.getInstance().uploadFile(new File(targetPath), filePath).getUrl();
        // 删除本地图片
        if (new File(targetPath).exists()) {
            new File(targetPath).delete();
        }
        
        // 原头像
        String portrait = userInfo.getPortrait();
        
        // 文件解析
        InputStream inputStream = file.getInputStream();
        String contentType = file.getContentType();
        String type = contentType.substring(contentType.indexOf("/") + 1);
        // 文件路径
        String filePath="/img/user/"+UUID.randomUUID().toString().replace("-", "") + "." + type;
        // 执行上传
        String fileLink= COSManager.getInstance().uploadFile(inputStream, filePath).getUrl();
        // 更新信息
        userInfo.setPortrait(fileLink);
        userInfoMapper.updateByPrimaryKeySelective(userInfo);
        
        // 删除原头像
        if (!StringUtil.isNullOrEmpty(portrait) && portrait.contains("/img/user/")) {
            COSManager.getInstance().deleteFile(portrait);
        }
        
        executor.execute(new Runnable() {
            @Override
@@ -962,7 +971,6 @@
                }
            }
        });
    }