<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>2.5.0</version>
</dependency>
控制器
@RequestMapping("/addGiftdouble")
public Resp addGiftdouble(@RequestParam("file") MultipartFile file) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String fileExtension = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
String cc=file.getOriginalFilename();
int num = (int) (Math.random() * (20000 - 10000 + 1) + 10000);
String aa = simpleDateFormat.format(new Date());
String bb = aa + num;//随机名
String fileName = bb + fileExtension;//图片名字
String fileUrl = "http://" + OssUtil.uploadFile(file, "sys/gift", fileName);//oss地址
System.out.println("fileUrl=" + fileUrl);
System.out.println("fileExtension=" + fileExtension);
System.out.println("fileName=" + fileName);
Resp res = Resp.getNew().success("msg", "添加礼物成功");
res.put("data", fileUrl);
res.put("name",cc);
return res;
}
oss工具类OssUtil
package com.zj.ob.yyf.util;
import com.alibaba.fastjson.JSON;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.PutObjectResult;
import com.zj.ob.yyf.config.OssConfigProperties;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
public class OssUtil {
private static final Logger logger = LoggerFactory.getLogger(OssUtil.class);
private static String endpoint = OssConfigProperties.getEndpoint();
private static String accessKeyId = OssConfigProperties.getAccessKeyId();
private static String accessKeySecret = OssConfigProperties.getAccessKeySecret();
private static String bucketName = OssConfigProperties.getBucketName();
private static String host = OssConfigProperties.getHost();
public static String uploadFile(MultipartFile file, String folder, String fileName){
if(StringUtils.isNotBlank(folder)){
fileName = folder +"/"+ fileName;
}
String result = "";
System.out.println("fileName:"+fileName);
logger.info("Started");
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
try {
if (ossClient.doesBucketExist(bucketName)) {
} else {
System.out.println("您的Bucket不存在,创建Bucket:" + bucketName + "。");
ossClient.createBucket(bucketName);
}
InputStream is = new ByteArrayInputStream(file.getBytes());
PutObjectResult res = ossClient.putObject(bucketName, fileName, is);
System.out.println(JSON.toJSONString(res));
System.out.println("Object:" + fileName + "存入OSS成功。");
// result = bucketName +"." +host + "/" + fileName;
result = host + "/" + fileName;
is.close();
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");
System.out.println("Error Message: " + oe.getErrorMessage());
System.out.println("Error Code: " + oe.getErrorCode());
System.out.println("Request ID: " + oe.getRequestId());
System.out.println("Host ID: " + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ "such as not being able to access the network.");
System.out.println("Error Message: " + ce.getMessage());
} catch (Exception e) {
e.printStackTrace();
} finally {
ossClient.shutdown();
}
logger.info("Completed");
return result;
}
public static String deleteFile(String folder,String fileName){
if(StringUtils.isNotBlank(folder)){
fileName = folder +"/"+ fileName;
}
String result = "";
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
try {
ossClient.deleteObject(bucketName, fileName);
} catch (Exception e) {
e.printStackTrace();
} finally {
ossClient.shutdown();
}
logger.info("Completed");
return result;
}
}
配置oss参数实体类
package com.zj.ob.yyf.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class OssConfigProperties {
private static String endpoint;
private static String accessKeyId;
private static String accessKeySecret;
private static String bucketName;
private static String host;
@Value("${oss.accessKeyId}")
private String paccessKeyId;
@Value("${oss.endpoint}")
private String pendpoint;
@Value("${oss.accessKeySecret}")
private String paccessKeySecret;
@Value("${oss.bucketName}")
private String pbucketName;
@Value("${oss.host}")
private String phost;
@PostConstruct
public void transValues() {
endpoint = this.pendpoint;
accessKeyId = this.paccessKeyId;
accessKeySecret = this.paccessKeySecret;
bucketName = this.pbucketName;
host = this.phost;
}
public static String getEndpoint() {
return endpoint;
}
public static void setEndpoint(String endpoint) {
OssConfigProperties.endpoint = endpoint;
}
public static String getAccessKeyId() {
return accessKeyId;
}
public static void setAccessKeyId(String accessKeyId) {
OssConfigProperties.accessKeyId = accessKeyId;
}
public static String getAccessKeySecret() {
return accessKeySecret;
}
public static void setAccessKeySecret(String accessKeySecret) {
OssConfigProperties.accessKeySecret = accessKeySecret;
}
public static String getBucketName() {
return bucketName;
}
public static void setBucketName(String bucketName) {
OssConfigProperties.bucketName = bucketName;
}
public static String getHost() {
return host;
}
public static void setHost(String host) {
OssConfigProperties.host = host;
}
}
yml配置参数
oss:
endpoint: ****
accessKeyId: ***
accessKeySecret: ****
bucketName: ****
host: ***