7|7 简阅项目 修改头像功能
- 写代码之前的准备工作:
1.在阿里云oss登录并实名认证
开通对象存储控制台oss,新建一个bucket(多个单词中划线分割),开通AccessKey(可以改地址),记录id号,后面会用到
文章图片
image
pom.xml
com.aliyun.oss
aliyun-sdk-oss
2.8.3
- 第一个测试程序,测试阿里云OSS上传功能
public class AliOSSTest {
public static void main(String[] args) {
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高
String accessKeyId = "****";
String accessKeySecret = "****";
String bucketName = "****";
String filedir = "avatar/";
String fileKey = "hello.jpg";
// 创建OSSClient实例
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 上传文件
PutObjectResult putResult = ossClient.putObject(bucketName, filedir + fileKey, new File("D:\\bg.jpg"));
//时间戳
Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);
// 生成URL
URL url = ossClient.generatePresignedUrl(bucketName, filedir + fileKey, expiration);
System.out.println(url);
ossClient.shutdown();
}
}
Mapper类
@Update("UPDATE t_user SET nickname=#{nickname} WHERE id =#{id}")
void nickname(User user);
Service类
void nickname(User user);
编写实现类:
@Override
public void nickname(User user) {
userMapper.nickname(user);
}
}
测试类:
@Test
public void nickname() {
User user=userService.getUserById(1);
user.setNickname("明天");
userService.updateUser(user);
}
编写测试程序:UploadController
package com.soft1721.jianyue.api.controller;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.PutObjectResult;
import com.soft1721.jianyue.api.util.ResponseResult;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.Date;
import java.util.UUID;
@RestController
@RequestMapping(value = "https://www.it610.com/api")
public class UploadController {
@PostMapping("/avatar/upload")
public String ossUpload(@RequestParam("file") MultipartFile sourceFile) {
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
String accessKeyId = "***";
String accessKeySecret = "***";
String bucketName = "***";
String filedir = "avatar/";
// 获取源文件名
String fileName = sourceFile.getOriginalFilename();
// 获取源文件名后缀
String suffix = fileName.substring(fileName.lastIndexOf("."));
//uuid生成主文件名
String prefix = UUID.randomUUID().toString();
//新文件名
String newFileName = prefix + suffix;
//File类型的临时文件
File tempFile = null;
try {
//创建临时文件,用uuid主文件名+原后缀名
tempFile = File.createTempFile(prefix, prefix);
// MultipartFile转成File
sourceFile.transferTo(tempFile);
} catch (IOException e) {
e.printStackTrace();
}
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
ossClient.putObject(bucketName, filedir + newFileName, tempFile);
Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);
// 生成URL
URL url = ossClient.generatePresignedUrl(bucketName, filedir + newFileName, expiration);
ossClient.shutdown();
//URL返回给客户端
return url.toString();
}
}
userController修改用户头像接口:
@PostMapping("/avatar")
public String ossUpload(@RequestParam("file") MultipartFile sourceFile,@RequestParam("userId") int userId) {
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
String accessKeyId = "***";
String accessKeySecret = "***";
String bucketName = "***";
String filedir = "avatar/";
// 获取文件名
String fileName = sourceFile.getOriginalFilename();
// 获取文件后缀
String suffix = fileName.substring(fileName.lastIndexOf("."));
//uuid生成主文件名
String prefix = UUID.randomUUID().toString();
String newFileName = prefix + suffix;
File tempFile = null;
try {
//创建临时文件
tempFile = File.createTempFile(prefix, prefix);
// MultipartFile to File
sourceFile.transferTo(tempFile);
} catch (IOException e) {
e.printStackTrace();
}
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
ossClient.putObject(bucketName, filedir + newFileName, tempFile);
Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);
// 生成URL
URL url = ossClient.generatePresignedUrl(bucketName, filedir + newFileName, expiration);
ossClient.shutdown();
//根据userId查询出原始用户数据
User user = userService.getUserById(userId);
//更新头像属性
user.setAvatar(url.toString());
//修改用户信息并持久化
userService.updateUser(user);
//将头像链接返回给客户端,以便实时预览
return url.toString();
}
在swagger里面测试如果是200就成功了
前端:
1.setting页面点击用户资料跳转到user_info页面,别忘了在pages.json注册新页面
个人资料
【7|7 简阅项目 修改头像功能】2.user_info页面
昵称
{{ nickname }}
头像:
修改密码
.list-item {
display: flex;
height: 80px;
align-items: center;
justify-content: space-between;
}
/* .nickname{
float: right;
} */
推荐阅读
- 17|17 关山松 第二课作业#公众号项目# D20
- RxJava|RxJava 在Android项目中的使用(一)
- Hacking|Hacking with iOS: SwiftUI Edition - SnowSeeker 项目(一)
- 靠QQ月入上万灰色暴利偏门的项目
- spring|spring boot项目启动websocket
- vuex|vuex 基础结构
- 区块链开发平台(以太坊)
- java|java b2b2c shop 多用户商城系统源码- config 修改配置
- 如何在手机上查看测试vue-cli构建的项目
- django2.2|django2.2 一般项目步骤(初步)