1.bucket变更
项目根据需求更改了bucket,endPoint 是bucket的区域,若区域改变,则endPoint 一定要变。
String endPoint = "oss-cn-beijing.aliyuncs.com";
oss-cn-beijing 是bucket的区域 ,
endPoint 是创建 OSSClient 填的第一个参数
OSSClient client = new OSSClient(endPoint, KEY_ID, KEY_SECRET);
2.上传到指定目录
文件在后端上传:一开始使用的是oss的 uploadFile(MultipartFile file) 函数
public String uploadFile(MultipartFile file) throws IOException {
if (file == null) return "";
//name获取的是上传文件的原始名称
String name = file.getOriginalFilename();
// 变成了存储路径了 【路径是以年月日为目录的】
String objectName = getName(name);
log.error("uploadFile--objectName:"+objectName);
OSSClient client = getClient();
PutObjectResult result = getClient().putObject(BUCKET, objectName, file.getInputStream());
client.shutdown();
return objectName;
}
private String getName(String name) {
String suffix = name.substring(name.lastIndexOf("."));
String finalFileName = System.currentTimeMillis() + suffix;
String objectName = getDir() + finalFileName;
return objectName;
}
private String getDir() {
Calendar calendar = Calendar.getInstance();
return calendar.get(Calendar.YEAR) + "/" + (calendar.get(Calendar.MONTH) + 1) + "/" + calendar.get(Calendar.DATE) + "/";
}
所以想要上传的文件保存到指定目录,需要自己重写方法:
现在的需求是: 上传一张图片或pdf要上传到 你输入指定的目录下
比如:我上传的图片要上传的 测试目录下: 路径为:/word/测试/
word为上一级目录,所有上传的文件都要在此目录下
public String uploadWordFile(MultipartFile file,String wordName) throws IOException {
if (file == null) return "";
String name = file.getOriginalFilename();
String objectName = getWordName(name,wordName);
OSSClient client = getClient();
PutObjectResult result = getClient().putObject(BUCKET, objectName, file.getInputStream());
client.shutdown();
return objectName;
}
private String getWordName(String name,String wordName) {
String objectName = getWordDir(wordName) + name;
return objectName;
}
private String getWordDir(String wordName) {
return "word/"+wordName+"/";
}