Oss文件上传

思路:前端访问上传接口,传本地图片,后端根据图片调用工具类把图片上传到阿里云,返回一个服务器上图片的下载链接给前端。

 

一、普通上传

public class OssTest {
    public static void main(String[] args) throws FileNotFoundException {
        // 区域
        String endpoint = "http://oss-cn-beijing.aliyuncs.com";
        // 秘钥
        String accessKeyId = "LTAI5tPwAwJxRP6utEp6sRZE";
        String accessKeySecret = "qcI7xgSb3KKpf42SFrqq5q2E8IDv8x";
        // 存储空间
        String bucketName = "tlias-web-management-mfc";

        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        // 上传文件
        InputStream inputStream = new FileInputStream("C:\\Users\\sion\\Desktop\\证件照片\\2f799673839e1e7bf86848a86931561.jpg");

        //参数1: 桶名字  参数2: 图片上传后名字   参数3: 图片流
        ossClient.putObject(bucketName, "证件照.jpg", inputStream);

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

二、模板上传

  1. 配置文件
aliyun:
  oss:
    endpoint: oss-cn-beijing.aliyuncs.com
    accessKeyId: LTAI5tPwAwJxRP6utEp6sRZE
    accessKeySecret: qcI7xgSb3KKpf42SFrqq5q2E8IDv8x
    bucketName: tlias-web-management-mfc
    url: https://tlias-web-management-mfc.oss-cn-beijing.aliyuncs.com

   2.配置类

@Data
@Component
@ConfigurationProperties(prefix = "aliyun.oss")  //读取配置文件
public class OssProperties {
    //服务器区域
    private String endpoint;
    //密匙key
    private String accessKeyId;
    //密匙
    private String accessKeySecret;
    //存储空间
    private String bucketName;
    //域名
    private String url;
}

    

  1. OssTemplate工具类
//阿里存储工具类
@Component
public class OssTemplate {

    //注入配置参数实体类对象
    @Autowired
    private OssProperties ossProperties;

    //文件上传
    public String upload(String fileName, InputStream inputStream) {

        //创建客户端
        OSS ossClient = new OSSClientBuilder().build(ossProperties.getEndpoint(),
                ossProperties.getAccessKeyId(), ossProperties.getAccessKeySecret());

        //设置文件最终的路径和名称
        String objectName = "images/" + new SimpleDateFormat("yyyy/MM/dd").format(new Date())
                + "/" + System.currentTimeMillis() + fileName.substring(fileName.lastIndexOf("."));

        //meta设置请求头,解决访问图片地址直接下载
        ObjectMetadata meta = new ObjectMetadata();
        meta.setContentType(getContentType(fileName.substring(fileName.lastIndexOf("."))));

        //上传
        ossClient.putObject(ossProperties.getBucketName(), objectName, inputStream, meta);

        //关闭客户端
        ossClient.shutdown();

        return ossProperties.getUrl() + "/" + objectName;
    }

    //文件后缀处理
    private String getContentType(String FilenameExtension) {
        if (FilenameExtension.equalsIgnoreCase(".bmp")) {
            return "image/bmp";
        }
        if (FilenameExtension.equalsIgnoreCase(".gif")) {
            return "image/gif";
        }
        if (FilenameExtension.equalsIgnoreCase(".jpeg") ||
                FilenameExtension.equalsIgnoreCase(".jpg") ||
                FilenameExtension.equalsIgnoreCase(".png")) {
            return "image/jpg";
        }
        return "image/jpg";
    }
}

    2.controller层

@Slf4j
@RestController
public class FileController {
    @Autowired
    OssTemplate ossTemplate;

    @PostMapping("/upload")
    //MultipartFile :接收文件类型
    public Result uploadFile(MultipartFile image) throws IOException {
       //调用文件上传
        String filePath = ossTemplate.upload(image.getOriginalFilename(),image.getInputStream());
        log.info("服务器文件路径:" + filePath);
        //返回文件路径
        return Result.success(filePath);
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值