基于华为云obs的springMVC文件上传下载,简单demo

使用华为云的obs作为文件服务
使用springdata jpa框架操作数据库

创建springboot项目,添加华为云obs的SDK的maven依赖

		<!-- 开启spring配置类 -->
		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- 华为云obs的SDK -->
        <dependency>
            <groupId>com.huaweicloud</groupId>
            <artifactId>esdk-obs-java</artifactId>
            <version>[3.19.7,)</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

版本号[3.19.7,)没有问题,表示自动选择最高版本,最低使用3.19.7版本

自定义配置类,并读取配置

# 华为云 obs地址
obs.endPoint=华为云的obs的endpoint地址
obs.ak=华为云账号的ak
obs.sk=华为云账号的sk
obs.bucket=华为云的obs创建的桶名称,建议在华为云obs控制台创建,也可以使用SDK创建

在pom的依赖中配置开启spring的配置类,创建配置类ObsConfigProperties

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Data // lombok注解
@Component // 将此类加载到spring容器中
@ConfigurationProperties(prefix = "obs") // 与配置文件中obs的前缀对应
public class ObsConfigProperties {
   
    private String endPoint;
    private String ak;
    private String sk;
    private String bucket;
}

在后面的代码中就可以使用
@Autowired
private static ObsConfigProperties properties;
加载配置信息,也可以使用的@Value("${obs.endPoint}") 方式加载配置

编写文件上传下载的工具类

import com.obs.services.ObsClient;
import com.obs.services.model.ObsObject;
import com.obs.services.model.PutObjectResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.io.IOException;
import java.io.InputStream;

/**
 * 以uuid作为存放在华为云的文件名
 *
 */
@Component
public class ObsUtils {
   
    private static ObsConfigProperties properties;
    private static ObsClient obsClient;

    /**
     * 通过输入流的方式上传文件
     * @param url 上传到OBS桶中的路径
     * @param inputStream
     * @return
     */
    public static String uploadFile(String url, InputStream inputStream) {
   
        PutObjectResult putObjectResult = obsClient.putObject(properties.getBucket(), url, inputStream);
        int statusCode = putObjectResult.getStatusCode();
        if (statusCode != 200) {
   
            throw new RuntimeException("文件上传异常,http响应码为" + statusCode);
        }
        return url;
    }

    /**
     * 根据文件的路径获取文件的输入流
     *
     * @param url
     * @return
     * @throws IOException
     */
    public static InputStream downFile(String url) throws IOException {
   
        ObsObject obsObject = obsClient.getObject(properties.getBucket(), url);

        Long contentLength = obsObject.getMetadata().getContentLength();
        return obsObject.getObjectContent();
    }

    @PostConstruct
    public void init() {
   
        obsClient = new ObsClient(properties.getAk(), properties.getSk(), properties.getEndPoint());
    }

    @Autowired
    public void setProperties(ObsConfigProperties 
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值