import com.nonglin.commonutils.R;
import com.nonglin.oss.service.OssService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
/**
-
@Description :
-
@Author :lenovo
-
@Date :2021/3/6 19:42
*/
@Api(description=“文件上传”)
@RestController
@RequestMapping(“/eduoss/fileoss”)
@CrossOrigin//解决跨域问题
public class OssController {
@Autowired
private OssService ossService;
//上传头像的方法
@ApiOperation(value = “上传讲师头像”)
@PostMapping
public R uploadOssFile(MultipartFile file){
//获取上传文件,MultippartFile
//返回上传到oss路径
String url = ossService.uploadFileAvatar(file);
return R.ok().data(“url”,url);
}
}
=========================================================================
创建OssService接口及OssServiceImpl实现类
OssService接口:
package com.nonglin.oss.service;
import org.springframework.web.multipart.MultipartFile;
/**
-
@Description :
-
@Author :lenovo
-
@Date :2021/3/6 19:41
*/
public interface OssService {
String uploadFileAvatar(MultipartFile file);
}
OssServiceImpl实现类:
package com.nonglin.oss.service.impl;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.nonglin.oss.service.OssService;
import com.nonglin.oss.utils.ConstantPropertiesUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
/**
-
@Description :
-
@Author :lenovo
-
@Date :2021/3/6 19:40
*/
@Service
public class OssServiceImpl implements OssService {
//上传头像到oss
public String uploadFileAvatar(MultipartFile file){
//工具类获取值
/* yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,
Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。*/
String endpoint = ConstantPropertiesUtils.END_POIND;
/*阿里云账号AccessKey拥有所有API的访问权限,风险很高。
强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。*/
String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
try{
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
//获取上传文件输入流
InputStream inputStream = file.getInputStream();
//获取文件名称
String fileName = file.getOriginalFilename();
//1、在文件名称里面添加随机唯一的值
String uuid = UUID.randomUUID().toString().replaceAll(“-”, “”);
fileName = uuid+fileName;//y526d5su01.ipg
//2、把文件按照日期进行分类
//获取当前日期
//2021/3/3
String datePath = new DateTime().toString(“yyyy/MM/dd”);
//拼接 2021/3/3/y526d5su01.ipg
fileName = datePath+“/”+fileName;
//拼接后的文件可以在阿里云oss中按照日期分类到不同文件夹中,避免了所有文件夹放到根目录下
//调用oss方法实现上传
//第一个参数 Bucket名称
//第二个参数 上传到oss文件路径和文件名称
//第三个参数 上传文件 输入流
ossClient.putObject(bucketName,fileName,inputStream);
// 关闭OSSClient。
ossClient.shutdown();
//把上传之后文件路径返回
//需要把上传到阿里云oss手动拼接出来
//上传后文件路径:
// https://edu03.oss-cn-beijing.aliyuncs.com/01.jpg
String url = “https://”+bucketName+“.”+endpoint+“/”+fileName;
return url;
}catch(Exception e) {
e.printStackTrace();
}
return null;
}
}
@value注解:将外部的值动态注入到Bean中
这部分代码中1、是为了避免上传文件名重复,导致后来的文件覆盖前面的。
2、使上传的文件可以进行分类,避免所有文件放到同一个文件夹中
=========================================================================
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
大家的负担。**
[外链图片转存中…(img-vC4NHky1-1710871530877)]
[外链图片转存中…(img-PuGF54n3-1710871530878)]
[外链图片转存中…(img-oxd1itHp-1710871530878)]
[外链图片转存中…(img-K46kLOFF-1710871530879)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
[外链图片转存中…(img-IOLRr2y0-1710871530879)]