创建好bucket 开启跨域
添加好用户一定要记好 accessKeyID 和 accessKeySecret
添加完毕就进入拷贝代码模式
maven地址
<!-- oss --> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.8.0</version> </dependency>
application.yml
aliyun: oss: bucketName: #此处填你自己创建oss的bucketName accessKeyId: #此处填你自己创建子用户的的accessKeyId accessKeySecret: #此处填你自己创建子用户的的accessKeySecret #OSS对应的区域 endpoint: http://oss-cn-shanghai.aliyuncs.com #自定义的bucketName下的目录 filehost: imgs
新建配置文件 OssConfiguration.java
/** * 把配置文件中的配置信息读取到该类中. */ @Data //lombok @Configuration public class OssConfiguration { @Value("${aliyun.oss.endpoint}") private String endPoint; @Value("${aliyun.oss.accessKeyId}") private String accessKeyId; @Value("${aliyun.oss.accessKeySecret}") private String accessKeySecret; @Value("${aliyun.oss.filehost}") private String fileHost; @Value("${aliyun.oss.bucketName}") private String bucketName; //省略getter setter方法 或者用lombok }
新建AliyunOssUtil工具类
@Component public class AliyunOssUtil { @Autowired private OssConfiguration config; public String upload(File file) { if (file == null) { return null; } String endPoint = config.getEndPoint(); String keyId = config.getAccessKeyId(); String keySecret = config.getAccessKeySecret(); String bucketName = config.getBucketName(); String fileHost = config.getFileHost(); //定义子文件的格式 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String dateStr = format.format(new Date()); //阿里云文件上传客户端 OSSClient client = new OSSClient(endPoint, keyId, keySecret); try { //判断桶是否存在 if (!client.doesBucketExist(bucketName)) { //创建桶 client.createBucket(bucketName); CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName); //设置访问权限为公共读 createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead); //发起创建桶的请求 client.createBucket(createBucketRequest); } //当桶存在时,进行文件上传 //设置文件路径和名称 String fileUrl = fileHost + "/" + (dateStr + "/" + UUID.randomUUID().toString().replace("-", "") + "-" + file.getName()); PutObjectResult result = client.putObject(new PutObjectRequest(bucketName, fileUrl, file)); client.setBucketAcl(bucketName, CannedAccessControlList.PublicRead); //文件上传成功后,返回当前文件的路径 if (result != null) { return fileUrl; } } catch (Exception e) { e.printStackTrace(); } finally { if (client != null) { client.shutdown(); } } return null; } }
新建OssController
@Slf4j @Api(value = "OssController") @RestController @RequestMapping("media") public class OssController { @Autowired private AliyunOssUtil ossUtil; // @ApiOperation(value = "上传图片,返回地址路径") // @ApiImplicitParams({ // @ApiImplicitParam(name = "uploadFile", value = "图片文件", required = false, dataType = "Integer"), // }) @PostMapping("OssUploadFile") public Object OssUploadFile(@RequestParam("file") MultipartFile file) { String url ="https://shiguangyimeiimgs.oss-cn-shanghai.aliyuncs.com/"; try { if (file != null) { String fileName = file.getOriginalFilename(); if (!"".equals(fileName.trim())) { File newFile = new File(fileName); FileOutputStream os = new FileOutputStream(newFile); os.write(file.getBytes()); os.close(); //把file里的内容复制到奥newFile中 file.transferTo(newFile); String upload = ossUtil.upload(newFile); //图片回显地址: log.info("url = "+url+ upload); return url+ upload; } } } catch (Exception e) { e.printStackTrace(); return "上传失败"; } return "上传失败"; } }
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。