依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
配置yml
aliyun:
oss:
bucket_diasiahhr_name: diasiatest
bucket_diasiaparty_name: diasiatest
bucket_diasiavideo_name: diasiatest
bucket_diasiameeting: diasiatest
bucket_name: diasiatest
access_key: -----------------------
access_secret: --------------------
endpoint: -----------
filedir: partner/
expire_year: 30
sts_access_key: ------------
sts_access_secret: -----------
sts_endpoint: -------------
sts_filedir: video/
sts_arn: ------------
自己的/自己公司的 代表 “--------------------------”
OssConfig
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
/**
* OSS存储配置
*/
@Configuration
@Data
@Component
public class OssConfig {
@Value("${aliyun.oss.endpoint}")
private String endpoint;
@Value("${aliyun.oss.access_key}")
private String accessKeyId;
@Value("${aliyun.oss.access_secret}")
private String accessKeySecret;
@Value("${aliyun.oss.filedir}")
private String filedir;
@Value("${aliyun.oss.expire_year}")
private int expireYear;
@Value("${aliyun.oss.sts_endpoint}")
private String stsEndpoint;
@Value("${aliyun.oss.sts_access_key}")
private String stsAccessKeyId;
@Value("${aliyun.oss.sts_access_secret}")
private String stsAccessKeySecret;
@Value("${aliyun.oss.sts_filedir}")
private String stsFiledir;
@Value("${aliyun.oss.sts_arn}")
private String stsArn;
@Value("${aliyun.oss.bucket_diasiahhr_name}")
private String bucketDiasiahhrName;
@Value("${aliyun.oss.bucket_diasiaparty_name}")
private String bucketDiasiapartyName;
@Value("${aliyun.oss.bucket_diasiavideo_name}")
private String bucketDiasiavideoName;
@Value("${aliyun.oss.bucket_diasiameeting}")
private String bucketDiasiaMeeting;
@Bean
public OssClientFactoryBean ossClientFactoryBean() {
final OssClientFactoryBean factoryBean = new OssClientFactoryBean();
factoryBean.setEndpoint(endpoint);
factoryBean.setAccessKeyId(accessKeyId);
factoryBean.setAccessKeySecret(accessKeySecret);
return factoryBean;
}
}
OssClientFactoryBean
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import lombok.Data;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.util.Assert;
@Data
public class OssClientFactoryBean implements FactoryBean<OSS>, InitializingBean, DisposableBean {
private OSS oss;
private String bucketName;
private String endpoint;
private String accessKeyId;
private String accessKeySecret;
@Override
public OSS getObject() throws Exception {
return this.oss;
}
@Override
public Class<?> getObjectType() {
return OSS.class;
}
@Override
public boolean isSingleton() {
return true;
}
@Override
public void destroy() throws Exception {
if (this.oss != null) {
this.oss.shutdown();
}
}
@Override
public void afterPropertiesSet() throws Exception {
Assert.notNull(this.endpoint, "'endpoint' must be not null");
Assert.notNull(this.accessKeyId, "'accessKeyId' must be not null");
Assert.notNull(this.accessKeySecret, "'accessKeySecret' must be not null");
this.oss = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
}
}
TestController
import cn.hutool.core.util.IdUtil;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.ObjectMetadata;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.example.studydemo.ossdemo.util.OssConfig;
import lombok.Getter;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;
import result.CommonResult;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
@Controller
public class TestController {
@Resource
@Getter
private OssConfig ossConfig;
//单图片上传
@RequestMapping(value = "/createPlay", method = RequestMethod.GET)
public CommonResult<Void> uploadImg(
@RequestParam String name,
@RequestParam String startData,
@RequestParam String dataHour,
@RequestPart("file") MultipartFile multipartFile
) throws IOException {
String time = startData + " " + dataHour;
OSSClient ossClient=new OSSClient(ossConfig.getEndpoint(), ossConfig.getAccessKeyId(), ossConfig.getAccessKeySecret());
String bucket=ossConfig.getBucketDiasiaMeeting();
// 上传文件流。
InputStream inputStream = multipartFile.getInputStream();
String[] filenames = StringUtils.split(multipartFile.getOriginalFilename(), ".");
String objectId = IdUtil.objectId();
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentLength(inputStream.available());
metadata.setCacheControl("no-cache");
metadata.setHeader("Pragma", "no-cache");
metadata.setContentType("image/jpg");
String fileName = objectId + "." + filenames[1];
metadata.setContentDisposition("inline;filename=" + fileName);
ossClient.putObject(bucket, "appPlayPicture/" + objectId + "." + filenames[1], inputStream, metadata);
Date expir = new Date(System.currentTimeMillis() + 36000000 * 10000000);
String url = ossClient.generatePresignedUrl(bucket, "appPlayPicture/" + fileName, expir).toString();
System.out.println(url);
//业务添加-------传个url添加到数据库即可,前端获取--查询
//partnerAppVideoService.creatPlay(name,startData,dataHour,url);
return CommonResult.success();
}
}
成功!单图片上传-----