手把手教你如何使用阿里云oss上传
首先访问阿里云官网https://www.aliyun.com/?utm_content=se_1008364713
搜OSS对象存储出现以下页面
在bucket列表中点击创建bucket
bucket名称可随意起点击确认
接着在搜索框中搜索ram访问控制如下页面
紧接着在左侧点击用户
创建用户时控制台访问和编程访问勾选后点击确认
选中已经创建好的用户点击下载csv文件
文件打开信息如下
紧接着在后台服务中pom文件加上阿里云的依赖
com.aliyun.oss
aliyun-sdk-oss
3.10.2
和配置文件
Aliyun Config
aliyun.oss.accessKeyId=对应csv文件中的AccessKeyId
aliyun.oss.accessKeySecret=对应csv文件中的AccessKeySecret
Aliyun OSS Config
aliyun.oss.endpoint=对应点击oss对象存储中概述要上传的bucket的外网访问地址如图下
aliyun.oss.bucketName=对应bucket名称
aliyun.oss.folder= (可以不填但是不能没有此行配置)
大家也可以换一个工具类
使用此工具类
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyuncs.exceptions.ClientException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.multipart.MultipartFile;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
@Component
@Slf4j
public class FileOSSUtil {
// 阿里云API的内或外网域名
@Value("${aliyun.oss.endpoint}")
private static String endpoint;
// 阿里云API的密钥Access Key ID
@Value("${aliyun.oss.accessKeyId}")
private static String accessKeyId;
// 阿里云API的密钥Access Key Secret
@Value("${aliyun.oss.accessKeySecret}")
private static String accessKeySecret;
// 阿里云API的bucket名称
@Value("${aliyun.oss.bucketName}")
private static String bucketName;
// 赋值
public static void settingIniOSS(String endpoint, String accessKeyId, String accessKeySecret,String bucketName) {
FileOSSUtil.endpoint = endpoint;
FileOSSUtil.accessKeyId = accessKeyId;
FileOSSUtil.accessKeySecret = accessKeySecret;
FileOSSUtil.bucketName = bucketName;
}
public static String uploadFile(String objectKey, MultipartFile multipartFile) throws OSSException, ClientException, FileNotFoundException {
log.info("-----------上传文件为-------------"+multipartFile.getOriginalFilename());
//settingIniOSS(endpoint,accessKeyId,accessKeySecret,bucketName);
// 创建OSSClient的实例
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
//objectMetadata.setContentType(fileType);
//设置文件,解决不能预览
ObjectMetadata objectMetadata=new ObjectMetadata();
objectMetadata.setContentType("image/jpg");
try {
if(multipartFile.getSize() != 0 && !"".equals(multipartFile.getName())){
// getInputStream()返回一个InputStream以从中读取文件的内容。通过此方法就可以获取到流
InputStream multipartFileInputStream = multipartFile.getInputStream();
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectKey, multipartFileInputStream,objectMetadata);
ossClient.putObject(putObjectRequest);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
// 关闭流
ossClient.shutdown();
return "http://"+bucketName+"."+endpoint+"/"+multipartFile.getOriginalFilename();
}
}
}
此后台应用于前台element-ui中el-upload的action中的访问方法
@Value("${aliyun.oss.endpoint}")
String endpoint;
// 阿里云API的密钥Access Key ID
@Value("${aliyun.oss.accessKeyId}")
String accessKeyId;
// 阿里云API的密钥Access Key Secret
@Value("${aliyun.oss.accessKeySecret}")
String accessKeySecret;
// 阿里云API的bucket名称
@Value("${aliyun.oss.bucketName}")
String bucketName;
@RequestMapping(“pic”)
public ResultEntity uploadPic(MultipartFile file) throws IOException, ClientException {
log.info(“文件:”+file.getOriginalFilename());
FileOSSUtil.settingIniOSS(endpoint,accessKeyId,accessKeySecret,bucketName);
String url=FileOSSUtil.uploadFile(file.getOriginalFilename(),file);
return ResultEntity.ok(“200”,“上传成功”,url);
}
返回的resultentity是楼主自行封装的返回值可以改为需要的具体返回值
ui地址如下https://element.eleme.cn/#/zh-CN/component/container
前台参考如下