<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>[7.2.0, 7.2.99]</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
package com.learn.common.utils;
import com.google.gson.Gson;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import java.util.Date;
public class QiniuUploadUtil {
private static final String accessKey = "ojcdZhgxHynIK7Va9DH2OGc9YG94lTzyAsCJn_8e8";
private static final String secretKey = "AFW9QSV8BAZ8p1vh_dKDm30BBybvIWAjAhQWUyMZ8";
private static final String bucket = "learn-bucket";
private static final String prix = "http://q3l7tcew1.bkt.clouddn.com/";
private UploadManager manager;
public QiniuUploadUtil() {
//初始化基本配置
Configuration cfg = new Configuration(Region.region2());
//创建上传管理器
manager = new UploadManager(cfg);
}
//文件名 = key
//文件的byte数组
public String upload(String imgName , byte [] bytes) {
Auth auth = Auth.create(accessKey, secretKey);
//构造覆盖上传token
String upToken = auth.uploadToken(bucket,imgName);
try {
Response response = manager.put(bytes, imgName, upToken);
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
//返回请求地址
return prix+putRet.key+"?t="+new Date().getTime();
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
}
package com.learn.system.service;
import com.learn.common.service.BaseService;
import com.learn.common.utils.IdWorker;
import com.learn.common.utils.QiniuUploadUtil;
import com.learn.domain.company.Department;
import com.learn.domain.system.Role;
import com.learn.domain.system.User;
import com.learn.system.client.DepartmentFeignClient;
import com.learn.system.dao.RoleDao;
import com.learn.system.dao.UserDao;
import com.sun.org.apache.xml.internal.security.utils.Base64;
import org.apache.shiro.crypto.hash.Md5Hash;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.io.IOException;
import java.lang.annotation.Target;
import java.util.*;
@Service
public class UserService extends BaseService{
@Autowired
private UserDao userDao;
@Autowired
private RoleDao roleDao;
@Autowired
private IdWorker idWorker;
public String uploadImage(String id, MultipartFile file) throws IOException {
//1.根据id查询用户
User user = userDao.findById(id).get();
//2.将图片上传到七牛云存储,获取请求路径
String imgUrl = new QiniuUploadUtil().upload(user.getId(), file.getBytes());//上传图片名,图片的byte数组
//3.更新用户头像地址
user.setStaffPhoto(imgUrl);
userDao.save(user);
//4.返回
return imgUrl;
}
}
//1.解决跨域
@CrossOrigin
//2.声明restContoller
@RestController
//3.设置父路径
@RequestMapping(value="/sys")
public class UserController extends BaseController {
@Autowired
private UserService userService;
@Autowired
private PermissionService permissionService;
@Autowired
private JwtUtils jwtUtils;
@Autowired
private DepartmentFeignClient departmentFeignClient;
@RequestMapping("/user/upload/{id}")
public Result upload(@PathVariable String id,@RequestParam(name="file") MultipartFile file ) throws IOException {
//1.调用service保存图片(获取到图片的访问地址(dataUrl | http地址))
String imgUrl = userService.uploadImage(id,file);
//2.返回数据
return new Result(ResultCode.SUCCESS,imgUrl);
}
}