首先先要去购买阿里的oss云文件存储
获得你的相对应属性
String endpoint = "...";
String accessKeyId = "...";
String accessKeySecret = "...";
String bucketName = "...";
导入依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
以上传文件夹为例,工作中正好遇到这个需求,简单记录一下。
前端界面
接口
ossUtils 工具类
cesh
/**
* 上传文件
* dugt1998@163.com
*/
public String uploadImage(MultipartFile file) throws Exception {
InputStream in = file.getInputStream();
String fileOriginalFilename = file.getOriginalFilename();
String fileName = fileOriginalFilename.split("/")[1];
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentLength(in.available());
metadata.setCacheControl("no-cache");
metadata.setHeader("Access-Control-Allow-Origin", "*");
metadata.setHeader("Access-Control-Allow-Methods", "POST GET HEAD PUT DELETE");
metadata.setHeader("Access-Control-Max-Age", "3600");
metadata.setHeader("Pragma", "no-cache");
metadata.setContentEncoding("utf-8");
metadata.setContentType(fileName);
OSS oss = new OSSClientBuilder().build(endPoint, accessKeyId, accessKeySecret);
oss.putObject(bucket, fileDir + fileName, in, metadata);
oss.shutdown();
in.close();
return "https://" + bucket + "." + endPoint + "/" + fileDir + fileName;
}
老样子,写完测试
OK!!!
Oss utils
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.ObjectMetadata;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.util.*;
/**
* @author dugt1998@163.com
* @date 2020/11/21 9:13
*/
@Component
public class OSSUtils {
private static final String END_POINT = "oss-cn-qingdao.aliyuncs.com";
private static final String ACCESS_KEY_ID = "";
private static final String ACCESS_KEY_SECRET = "";
private static final String BUCKET = "";
private static final String FILE_DIR = "test/";
/**
* 上传文件
* dugt1998@163.com
*/
public String uploadImage(MultipartFile file) throws Exception {
InputStream in = file.getInputStream();
String fileName = file.getOriginalFilename();
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentLength(in.available());
metadata.setCacheControl("no-cache");
metadata.setHeader("Access-Control-Allow-Origin", "*");
metadata.setHeader("Access-Control-Allow-Methods", "POST GET HEAD PUT DELETE");
metadata.setHeader("Access-Control-Max-Age", "3600");
metadata.setHeader("Pragma", "no-cache");
metadata.setContentEncoding("utf-8");
metadata.setContentType(getContentType(fileName));
OSS oss = new OSSClientBuilder().build(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
oss.putObject(BUCKET, FILE_DIR + fileName, in, metadata);
oss.shutdown();
in.close();
return "https://" + BUCKET + "." + END_POINT + "/" + FILE_DIR + fileName;
}
/**
* 根据图片名 判断oss是否存在图片
* @return
*/
public boolean existsImg(String imgName) {
OSS oss = new OSSClientBuilder().build(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
String ossFileName = FILE_DIR + imgName;
return oss.doesObjectExist(BUCKET, ossFileName);
}
private static String getContentType(String fileName) {
String fileSuffix = fileName.split("\\.")[1];
switch (fileSuffix) {
case "jpeg":
case "jpg":
return "image/jpeg";
case "png":
return "image/png";
}
return null;
}
}