引入依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.1.0</version>
</dependency>
配置文件
aliyun:
oss:
# 地域节点
endPoint:
# Bucket 域名
# urlPrefix:
# accessKey Id
accessKeyId:
# accessKey Secret
accessKeySecret:
# 你的Bucket名称
bucketName:
# 目标文件夹
fileHost:
工具类
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.OSSObject;
import com.qyzb.base.result.ResultCode;
import lombok.Getter;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.PostConstruct;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
@Component
@Setter
@Getter
public class OSSUtils {
private static String endPoint;
private static String bucketName;
private static String fileHost;
@Value("${aliyun.oss.endPoint}")
private String endpoint;
@Value("${aliyun.oss.accessKeyId}")
private String accessKeyId;
@Value("${aliyun.oss.accessKeySecret}")
private String accessKeySecret;
@Value("${aliyun.oss.bucketName}")
private String bucketname;
@Value("${aliyun.oss.fileHost}")
private String filehost;
static OSS ossClient;
@PostConstruct
public void initClient(){
ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
endPoint = this.endpoint;
bucketName = this.bucketname;
fileHost = this.filehost;
}
public static String upload(MultipartFile uploadFile) {
String returnImgeUrl = "";
String originalFilename = uploadFile.getOriginalFilename();
long l = System.currentTimeMillis();
String newFileName = l + "_" + originalFilename;
String uploadUrl = fileHost + "/" + newFileName;
InputStream inputStream = null;
try {
inputStream = uploadFile.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
ossClient.putObject(bucketName, uploadUrl, inputStream);
returnImgeUrl = "http://" + bucketName + "." + endPoint + "/" + uploadUrl;
return newFileName;
}
public static String download(String fileName, HttpServletResponse response) throws UnsupportedEncodingException {
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
String fileKey = fileHost + "/" + fileName;
OSSObject ossObject = ossClient.getObject(bucketName, fileKey);
try {
InputStream inputStream = ossObject.getObjectContent();
BufferedInputStream in = new BufferedInputStream(inputStream);
ServletOutputStream outputStream = response.getOutputStream();
BufferedOutputStream out = new BufferedOutputStream(outputStream);
byte[] buffer = new byte[1024];
int len = 0;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
out.flush();
out.close();
in.close();
return ResultCode.SUCCESS.message();
} catch (Exception e) {
return ResultCode.ERROR.message();
}
}
public static String getObjectByte(String url) throws Exception {
String fileKey = fileHost + "/" + url;
OSSObject ossObject = ossClient.getObject(bucketName, fileKey);
byte[] buffer = new byte[1024];
StringBuilder sb = new StringBuilder();
try {
InputStream inputStream = ossObject.getObjectContent();
int i = 0;
while ((i = inputStream.read(buffer)) != -1) {
sb.append(new String(buffer, 0, i));
}
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}
public static String delete(String fileName) {
try {
String fileKey = fileHost + "/" + fileName;
ossClient.deleteObject(bucketName, fileKey);
System.out.println("文件删除!");
return ResultCode.SUCCESS.message();
} catch (Exception e) {
e.printStackTrace();
return ResultCode.ERROR.message();
}
}
}