阿里云文件上传

手把手教你如何使用阿里云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
前台参考如下

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值