修改个人信息头像上传

This commit is contained in:
yuyang 2021-10-26 09:44:25 +08:00
parent 98fc694b9e
commit 24d978b6f3
2 changed files with 155 additions and 129 deletions

View File

@ -1,117 +1,123 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-modules</artifactId> <artifactId>ruoyi-modules</artifactId>
<version>3.0.0</version> <version>3.0.0</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>ruoyi-modules-system</artifactId> <artifactId>ruoyi-modules-system</artifactId>
<description> <description>
ruoyi-modules-system系统模块 ruoyi-modules-system系统模块
</description> </description>
<dependencies> <dependencies>
<!-- SpringCloud Alibaba Nacos --> <!-- SpringCloud Alibaba Nacos -->
<dependency> <dependency>
<groupId>com.alibaba.cloud</groupId> <groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency> </dependency>
<!-- SpringCloud Alibaba Nacos Config --> <!-- SpringCloud Alibaba Nacos Config -->
<dependency> <dependency>
<groupId>com.alibaba.cloud</groupId> <groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency> </dependency>
<!-- SpringCloud Alibaba Sentinel --> <!-- SpringCloud Alibaba Sentinel -->
<dependency> <dependency>
<groupId>com.alibaba.cloud</groupId> <groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency> </dependency>
<!-- SpringBoot Actuator --> <!-- SpringBoot Actuator -->
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId> <artifactId>spring-boot-starter-actuator</artifactId>
</dependency> </dependency>
<!-- Swagger UI --> <!-- Swagger UI -->
<dependency> <dependency>
<groupId>io.springfox</groupId> <groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId> <artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.fox.version}</version> <version>${swagger.fox.version}</version>
</dependency> </dependency>
<!-- Mysql Connector --> <!-- Mysql Connector -->
<dependency> <dependency>
<groupId>mysql</groupId> <groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId>
</dependency> </dependency>
<!-- RuoYi Common DataSource --> <!-- RuoYi Common DataSource -->
<dependency> <dependency>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common-datasource</artifactId> <artifactId>ruoyi-common-datasource</artifactId>
</dependency> </dependency>
<!-- RuoYi Common DataScope --> <!-- RuoYi Common DataScope -->
<dependency> <dependency>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common-datascope</artifactId> <artifactId>ruoyi-common-datascope</artifactId>
</dependency> </dependency>
<!-- RuoYi Common Log --> <!-- RuoYi Common Log -->
<dependency> <dependency>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common-log</artifactId> <artifactId>ruoyi-common-log</artifactId>
</dependency> </dependency>
<!-- RuoYi Common Swagger --> <!-- RuoYi Common Swagger -->
<dependency> <dependency>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common-swagger</artifactId> <artifactId>ruoyi-common-swagger</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>xhpc-common</artifactId> <artifactId>xhpc-common</artifactId>
<version>3.0.0</version> <version>3.0.0</version>
</dependency> </dependency>
</dependencies> <dependency>
<groupId>com.aliyun.oss</groupId>
<build> <artifactId>aliyun-sdk-oss</artifactId>
<finalName>${project.artifactId}</finalName> <version>3.10.2</version>
<plugins> <scope>compile</scope>
<plugin> </dependency>
<groupId>org.springframework.boot</groupId> </dependencies>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.4.0</version> <build>
<executions> <finalName>${project.artifactId}</finalName>
<execution> <plugins>
<goals> <plugin>
<goal>repackage</goal> <groupId>org.springframework.boot</groupId>
</goals> <artifactId>spring-boot-maven-plugin</artifactId>
</execution> <version>2.4.0</version>
</executions> <executions>
</plugin> <execution>
</plugins> <goals>
<resources> <goal>repackage</goal>
<resource> </goals>
<directory>src/main/resources</directory> </execution>
<includes> </executions>
<include>**/*.yml</include> </plugin>
<include>**/*.xml</include> </plugins>
<include>**/*.properties</include> <resources>
</includes> <resource>
<filtering>true</filtering> <directory>src/main/resources</directory>
</resource> <includes>
</resources> <include>**/*.yml</include>
</build> <include>**/*.xml</include>
<include>**/*.properties</include>
</project> </includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>

View File

@ -1,8 +1,15 @@
package com.xhpc.system.controller; package com.xhpc.system.controller;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import com.aliyun.oss.OSSClient;
import com.xhpc.common.core.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.PutMapping;
@ -26,6 +33,9 @@ import com.xhpc.system.api.domain.SysFile;
import com.xhpc.system.api.domain.SysUser; import com.xhpc.system.api.domain.SysUser;
import com.xhpc.system.api.model.LoginUser; import com.xhpc.system.api.model.LoginUser;
import com.xhpc.system.service.ISysUserService; import com.xhpc.system.service.ISysUserService;
import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest;
import javax.servlet.http.HttpServletRequest;
/** /**
* 个人信息 业务处理 * 个人信息 业务处理
@ -44,6 +54,8 @@ public class SysProfileController extends BaseController
@Autowired @Autowired
private RemoteFileService remoteFileService; private RemoteFileService remoteFileService;
@Autowired
private Environment environment;
/** /**
* 个人信息 * 个人信息
@ -124,19 +136,25 @@ public class SysProfileController extends BaseController
*/ */
@Log(title = "用户头像", businessType = BusinessType.UPDATE) @Log(title = "用户头像", businessType = BusinessType.UPDATE)
@PostMapping("/avatar") @PostMapping("/avatar")
public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file) throws IOException public AjaxResult avatar(HttpServletRequest request) {
{ try {
if (!file.isEmpty()) String fileNames = "";
{ StandardMultipartHttpServletRequest req = (StandardMultipartHttpServletRequest) request;
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); Iterator<String> iterator = req.getFileNames();
R<SysFile> fileResult = remoteFileService.upload(file); while (iterator.hasNext()) {
if (StringUtils.isNull(fileResult) || StringUtils.isNull(fileResult.getData())) MultipartFile file = req.getFile(iterator.next());
{ fileNames = file.getOriginalFilename();
return AjaxResult.error("文件服务异常,请联系管理员"); fileNames = DateUtils.timePath() + fileNames;
InputStream input = file.getInputStream();
// 创建OSSClient实例
OSSClient ossClient = new OSSClient(environment.getProperty("oss.endpoint"), environment.getProperty("oss.access-key"), environment.getProperty("oss.secret-key"));
// 上传文件流
ossClient.putObject(environment.getProperty("oss.bucket-name"), fileNames, input);
ossClient.shutdown();
} }
String url = fileResult.getData().getUrl(); LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
if (userService.updateUserAvatar(loginUser.getUsername(), url)) String url="https://xhpc-bucket1.oss-cn-hangzhou.aliyuncs.com/"+fileNames;
{ if (userService.updateUserAvatar(loginUser.getUsername(), url)) {
AjaxResult ajax = AjaxResult.success(); AjaxResult ajax = AjaxResult.success();
ajax.put("imgUrl", url); ajax.put("imgUrl", url);
// 更新缓存用户头像 // 更新缓存用户头像
@ -144,6 +162,8 @@ public class SysProfileController extends BaseController
tokenService.setLoginUser(loginUser); tokenService.setLoginUser(loginUser);
return ajax; return ajax;
} }
} catch (IOException e) {
e.printStackTrace();
} }
return AjaxResult.error("上传图片异常,请联系管理员"); return AjaxResult.error("上传图片异常,请联系管理员");
} }