1.引入依赖
<!-- 阿里云oss依赖 -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.1.0</version>
</dependency>
<!-- 日期工具栏依赖 -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
</dependency>
2.根据前端的请求调用后端的接口
3.在后端创建接口
@RestController
@RequestMapping("/eduoss/fileoss")
@Api(description = "阿里云oss对象")
public class OssController {
@Autowired
private OssService ossService;
@ApiOperation(value = "上传头像文件")
@PostMapping
public Msg uploadFile(MultipartFile file){
String url =ossService.uploadFileAvatar(file);
return Msg.success().data("url",url);
}
}
3.1调用service层
public interface OssService {
String uploadFileAvatar(MultipartFile file);
}
3.2实现service层,返回的是一个url
@Service
public class OssServiceImpl implements OssService {
@Override
public String uploadFileAvatar(MultipartFile file) {
String endpoint = ConstantPropertiesUtils.END_POIND;
String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
String bucketName =ConstantPropertiesUtils.BUCKET_NAME;
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
InputStream inputStream = file.getInputStream();
String fileName =file.getOriginalFilename();
String s = UUID.randomUUID().toString().replaceAll("-", "");
fileName+=s;
String dataPath =new DateTime().toString("yyyy/MM/dd");
fileName =dataPath +"/"+fileName;
ossClient.putObject(bucketName, fileName, inputStream);
ossClient.shutdown();
String url="https://"+bucketName+"."+endpoint+"/"+fileName;
return url;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
补充:
在yml文件中配置自己的bucket信息
#阿里云 OSS
#不同的服务器,地址不同
aliyun:
oss:
file:
endpoint:
oss-cn-beijing.aliyuncs.com
keyid:
yourKeyId
keysecret:
yourKeySecret
bucketname:
yourBucketName