OSS文件上传全流程

2 篇文章 0 订阅
2 篇文章 0 订阅

OSS 文件上传全流程


网页操作

  • 第一步 登陆阿里云搜索OSS
    在这里插入图片描述

  • 第二步开通 OSS
    在这里插入图片描述

  • 开通后,点击进入控制台开始操作了,创建一个bucket(桶)这个名称记录一下后面要用

在这里插入图片描述

  • 创建样板跟我一样就行,具体意思可以参照官方文档
    在这里插入图片描述
  • 创建完成后进入此页面

在这里插入图片描述

  • 上传个文件测试一下

在这里插入图片描述

  • 选择个图片上传一下

在这里插入图片描述
在这里插入图片描述
当上传完成后 点击文件管理 能看到上传文件
在这里插入图片描述

  • 那么怎么访问呢???

在这里插入图片描述

  • 这样就可以下载我的文件了

 	那么网页版的也差不多了该上实际代码了  go,go,go

Java方式上传文件

  1. 创建springboot项目导入依赖创建项目这个我是真的不想说了
   <!--aliyunOSS-->
       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!--aliyunOSS-->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.10.1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

<!-- 父依赖 -->
  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
  </parent>
  • 配置yml文件 前提找到这三个配置信息

    • 这里找到地址
      在这里插入图片描述
  • 这里找到keyid和秘钥
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
那么有这个三个东西千万别忘记你创建的bucket名称

  • 配置文件
#服务端口
server:
  port: 8888
spring:
  application:
    name: service-oss
  servlet:
    multipart:
      max-request-size: 10MB # 设置文件大小

aliyun:
  oss:
    file:
      endpoint: oss-cn-beijing.aliyuncs.com # 地址
      keyid:         # keyid
      keysecret:     # 秘钥
      bucketname:    # 这是你的创建bucket的名称


做一个接口试试:

  • controller
package cn.chy.com.controller;

import cn.chy.com.service.OssService;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;

/**
 * @Description: TODO
 * @author: 颜淮川
 * @date: 2021年10月09日 23:27
 */
@RestController
@RequestMapping("/eduoss/fileoss")
@CrossOrigin
public class OssController {


    @Resource
    private OssService ossService;

    @PostMapping
    public String uploadFile(MultipartFile file) {

        String url = ossService.uploadFileAvatar(file);
        System.out.println(url);
        return url;
    }
}

  • service 接口
package cn.chy.com.service;

import org.springframework.web.multipart.MultipartFile;

/**
 * @Description: TODO
 * @author: 颜淮川
 * @date: 2021年10月09日 23:27
 */
public interface OssService {
    /*
        上传头像到Oss
     */
    String uploadFileAvatar(MultipartFile file);
}

  • serviceImpl
package cn.chy.com.service;

import cn.chy.com.util.ContactPropertiesUtils;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;

/**
 * @Description: TODO
 * @author: 颜淮川
 * @date: 2021年10月09日 23:27
 */
@Service
public class OssServiceImpl implements OssService {

    @Override
    public String uploadFileAvatar(MultipartFile file) {


        // yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
        String endpoint = ContactPropertiesUtils.END_POINT;
        // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
        String accessKeyId = ContactPropertiesUtils.ACCESS_KEY_ID;
        String accessKeySecret = ContactPropertiesUtils.ACCESS_KEY_SECRET;
        String bucketName = ContactPropertiesUtils.BUCKET_NAME;

        try {

            // 获取文件名称
            String realName = file.getOriginalFilename();
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            // 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
            InputStream inputStream = file.getInputStream();
            // 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。
            ossClient.putObject(bucketName, realName, inputStream);

            // 关闭OSSClient。
            ossClient.shutdown();


            String url = "https://" + bucketName + "." + endpoint + "/" + realName;

            return url;


        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}

  • 借助工具类
package cn.chy.com.util;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @Description: TODO
 * @author: 颜淮川
 * @date: 2021年10月09日 23:19
 */
@Component
public class ContactPropertiesUtils implements InitializingBean {

    @Value("${aliyun.oss.file.endpoint}")
    private String endpoint;

    @Value("${aliyun.oss.file.keyid}")
    private String keyId;

    @Value("${aliyun.oss.file.keysecret}")
    private String keySecret;

    @Value("${aliyun.oss.file.bucketname}")
    private String bucketName;


    public static String END_POINT;

    public static String ACCESS_KEY_ID;

    public static String ACCESS_KEY_SECRET;

    public static String BUCKET_NAME;


    @Override
    public void afterPropertiesSet() throws Exception {
        END_POINT = endpoint;
        ACCESS_KEY_ID = keyId;
        ACCESS_KEY_SECRET = keySecret;
        BUCKET_NAME = bucketName;
    }
}

启动类没什么变化 (启动起来qdx)

测试一下,我用的是postman当然有swagger或者其他的都能测

在这里插入图片描述

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值