基于java的阿里云OSS对象存储服务应用--上传文件到OSS---初学

1. 我们需要的参数

(1)Endpoint(地域节点)--外网访问

基于java的阿里云OSS对象存储服务应用--上传文件到OSS---初学_第1张图片

(2) BucketName(仓库名称)

(3) AccessKeyID 和查看的 Secret888

                这个自己在头像下面找(没有就创建),secret需要手机号接收验证

(4)Suffer_URL(外网域名)

        前面还需要加上(开头+http://)(结尾+ /)8

基于java的阿里云OSS对象存储服务应用--上传文件到OSS---初学_第2张图片

2. 创建springboot-maven的项目

pom.xml 中所需要引入相关的依赖

        
            com.aliyun.oss
            aliyun-sdk-oss
            2.6.0
        
        
             commons-codec
             commons-codec
             1.10
        

        
            commons-fileupload
            commons-fileupload
            1.3.3
        
        
            commons-io
            commons-io
            2.4
        
        
            org.jdom
            jdom
            1.1.3
        

yml文件的配置

基于java的阿里云OSS对象存储服务应用--上传文件到OSS---初学_第3张图片

 目录

基于java的阿里云OSS对象存储服务应用--上传文件到OSS---初学_第4张图片

 OSSUtil类

import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.CannedAccessControlList;
import com.aliyun.oss.model.CreateBucketRequest;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

@Component
public class OSSUtil {

    @Value("${ali.key.ACCESSKEY_ID}")
    private String ACCESSKEY_ID;   // id

    @Value("${ali.key.ACCESSKEY_SECRET}")
    private String ACCESSKEY_SECRET;   // id对应的密钥

    @Value("${ali.oss.ENDPOINT}")
    private String ENDPOINT;     // 地域节点(外网访问)

    @Value("${ali.oss.BUCKET_NAME}")
    private String BUCKET_NAME;  // 仓库名字

    @Value("${ali.oss.SUFFER_URL}")
    private String SUFFER_URL;  // 外网域名

    /**
     *  获取oss的连接
     */
    public OSSClient getOSSClient(){

        // 创建一个OSSClient对象----构造方法中放入 (地域节点) 和 (id) 还有 (密钥)
        OSSClient ossClient = new OSSClient(ENDPOINT , ACCESSKEY_ID , ACCESSKEY_SECRET);
        // 判断bucket_name这个仓库是否存在
        if(ossClient.doesBucketExist(BUCKET_NAME)){
            System.out.println("bucket仓库存在");
        }else {
            System.out.println("bucket仓库不存在,创建一个名为" + BUCKET_NAME + "的仓库");
            // 通过api接口形式创建bucket仓库
//            CreateBucketRequest bucketRequest = new CreateBucketRequest(bucket_name);
            CreateBucketRequest bucketRequest = new CreateBucketRequest(null);
            bucketRequest.setBucketName(BUCKET_NAME);
            // 设置权限------这里设置为 公共读
            bucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
            ossClient.createBucket(bucketRequest);  // 创建仓库
        }
        return  ossClient;
    }


    /**
     *  基于OSS实现的文件上传
     */
    public String uploadFileByOSS(MultipartFile file , String fileType){
        String url = null;
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); // 日期格式化
        // 获取OSS对象
        OSSClient ossClient = this.getOSSClient();
        // 获取文件名和后缀
        String fileName = file.getOriginalFilename();
        String ext = fileName.substring(fileName.lastIndexOf("."));
        //格式化的日期---需要根据日期创建文件夹
        String date = simpleDateFormat.format(new Date());
        // 为避免图片重复,用UUID进行命名
        String uuid = UUID.randomUUID().toString().replace("-" , "");
        //组合文件上传后的完整的路径文件名
        String filePathName = fileType + "/" + date + "/" + uuid + ext;
        try {
            // 通过ossClient来获取上传文件后返回的url
            ossClient.putObject(BUCKET_NAME , filePathName , new ByteArrayInputStream(file.getBytes()));
            // 组合外网访问连接和路径文件名 生成url
            url = SUFFER_URL + filePathName;
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            // 关闭连接
            ossClient.shutdown();
        }
        return url;
    }


}

TestController

import com.example.oss_demo.utils.OSSUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

@Controller
public class TestController {

    @Autowired
    private OSSUtil ossUtil;

    @PostMapping("/test")
    @ResponseBody
    public String ossTest(@RequestParam(name = "file")MultipartFile file){
        String url = ossUtil.uploadFileByOSS(file, "jpg");
        System.out.println("url路径: " + url);
        return "文件上传成功";
    }
}

 index.html




    
    上传文件



上传文件

 效果图:

基于java的阿里云OSS对象存储服务应用--上传文件到OSS---初学_第5张图片

 

总结:

        oss上传文件存储并不是难,我注释写的也很清楚,希望能帮助到大家

你可能感兴趣的:(java,oss,阿里云,p2p,网络协议,网络,java)