springboot项目,最后返回的结果就是上传后文件的URL。
返回值为文件在你的OSS水桶上的url,方便项目进行下一步开发,也方便postman测试,初学阿里云项目,给自己的成长做一个记录哈哈!
写在application.properties中的
oss.endpoint=oss-cn-shenzhen.aliyuncs.com
oss.accessKeyId=码了码了
oss.accessKeySecret=码了码了
oss.bucket=caowenzhe
import java.io.InputStream;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import lombok.Data;
import lombok.ToString;
import lombok.extern.slf4j.Slf4j;
@ToString
@Data //自动生成get,set方法,故我模板类只写了一个upload方法
@Slf4j
//@Component 不用这种方式从配置文件中注入属性,采用再创建一个配置类AppProjectConfig,通过此配置类来注入属性
public class OssTemplate {
//@Value("${oss.endpoint}")不用这种方式从配置文件中注入属性,采用再创建一个配置类AppProjectConfig,通过此配置类来注入属性
String endpoint ;
String accessKeyId ;
String accessKeySecret ;
String bucket ;
public String upload(String filename,InputStream inputStream) {
log.debug("endpoint={}",endpoint);
log.debug("accessKeyId={}",accessKeyId);
log.debug("accessKeySecret={}",accessKeySecret);
log.debug("bucket={}",bucket);
try {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 上传文件流。
//InputStream inputStream = new FileInputStream("D:/temp/p2.jpg");
//参数直接传入inputStream
ossClient.putObject(bucket, "pic/"+filename, inputStream);
// 关闭OSSClient。
ossClient.shutdown();
String filepath = "https://"+bucket+"."+endpoint+"/pic/"+filename ;
log.debug("文件上传成功-{}",filepath);
//https://atcrowdfunding20190717.oss-cn-beijing.aliyuncs.com/pic/p1.jpg
return filepath;
} catch (Exception e) {
e.printStackTrace();
log.debug("文件上传失败-{}",filename);
return null ;
}
}
}
以下是配置类
@SpringBootConfiguration
public class AppProjectConfig {
@ConfigurationProperties(prefix="oss") //application.properties的前缀为oss的属性都传进来
@Bean
public OssTemplate ossTemplate() {
return new OssTemplate();
}
}