Java做OSS文件存储

添加依赖

        <!-- OSS SDK 相关依赖 -->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.8.0</version>
        </dependency>
        <!--apache comment tools-->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
        <!--提供文件上传下载-->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>

配置

    //仓库名称
    public static final String BUCKET_NAME = "********";
    //地域节点
    public static final String END_POINT = "oss-cn-****.aliyuncs.com";
    //AccessKey ID
    public static final String AccessKey_ID = "LTAI4FyfTFY**********";
    //Access Key Secret
    public static final String AccessKey_Secret = "gjmIqTd4S**********";
    //仓库中的某个文件夹
    public static final String FILE_HOST = "test";

当然做这一切的前提是你得有阿里云OSS云存储,他会给你AccessKey_IDAccessKey_Secret,这个最好记录在本地!

构建工具类

OSS存储工具

OssManagerUtil

/**
 * @author 朝花不迟暮
 * @version 1.0
 * @date 2020/10/28 14:14
 */

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.OSSObjectSummary;
import com.aliyun.oss.model.ObjectListing;
import com.aliyun.oss.model.ObjectMetadata;
import com.oss.demo.config.AliyunOSSConfigConstant;

import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 阿里Oss对象存储工具类
 */
public class OssManagerUtil {

    private static String endpoint = AliyunOSSConfigConstant.END_POINT;
    private static String accessKeyId = AliyunOSSConfigConstant.AccessKey_ID;
    private static String accessKeySecret = AliyunOSSConfigConstant.AccessKey_Secret;
    private static String bucket = AliyunOSSConfigConstant.BUCKET_NAME;


    private static OSS client;


    static {
        client = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    }


    /**
     * 上传图片
     *
     * @param fileName 图片名称,图片名称包括文件夹名称和“/”
     * @param length   图片大小
     * @param content  输入流
     */
    public static String uploadImage(String fileName, long length, InputStream content) {
        uploadBucketImage(bucket, fileName, length, content);
        return "https://" + bucket + "." + endpoint + "/" + fileName;
    }


    /**
     * 上传文件
     *
     * @param bucket   存储空间名
     * @param fileName 文件名(包括文件夹名称和“/”)
     * @param length   流的长度
     * @param content  输入流
     */
    public static void uploadBucketImage(String bucket, String fileName, long length, InputStream content) {
        // 创建上传Object的Metadata
        ObjectMetadata meta = new ObjectMetadata();
        // 必须设置ContentLength
        meta.setContentLength(length);
        // 上传Object.
        client.putObject(bucket, fileName, content, meta);
    }


    /**
     * 删除文件
     *
     * @param fileName 文件名称,图片名称包括文件夹名称和“/”
     */
    public static boolean delShopImage(String fileName) {
        //判断文件是否存在
        boolean exist = client.doesObjectExist(bucket, fileName);
        //文件不存在删除失败
        if (!exist) {
            return false;
        }
        //执行删除
        client.deleteObject(bucket, fileName);
        return true;
    }


    /**
     * 获得上传文件后url链接
     * 这个方法我没有看出作用!
     * @param fileName 文件名(包括文件夹名称和“/”)
     * @return
     */
    public static String getUrl(String fileName) {
        // 设置URL过期时间为10年  3600l* 1000*24*365*10
        Date expiration = new Date(System.currentTimeMillis() + 3600L * 1000 * 24 * 365 * 10);
        // 生成URL
        URL url = client.generatePresignedUrl(bucket, fileName, expiration);
        if (url != null) {
            return url.toString();
        }
        return null;
    }

    /**
     * 创建存储空间
     *
     * @param bucketName 新建存储空间默认为标准存储类型,私有权限。
     * @return
     */
    public static void crateBucket(String bucketName) {
        // 新建存储空间默认为标准存储类型,私有权限。
        client.createBucket(bucketName);
    }

    /**
    * @Description: 获取图片链接
    * @Param:
    * @return:
    * @Author: 朝花不迟暮
    * @Date: 2020/10/28
    */
    public static List<?> getPic(){
        ObjectListing objectListing = client.listObjects(bucket);
        List<OSSObjectSummary> list = objectListing.getObjectSummaries();
        List<Object> objects = new ArrayList<>();
        for (OSSObjectSummary summary : list)
        {
            System.out.println("https://coderxy.top/" + summary.getKey());
            objects.add("https://coderxy.top/" + summary.getKey());
        }
        //list.forEach(System.out::println);
        client.shutdown();
        return objects;
    }
}

原作者的差别就在最后那个方法,各位可以按照自己的实际情况去选择,我这是写了个获取oss上所有key加域名的一种访问路径放在集合里!当然AliyunOSSConfigConstant只是引用常量而已,你们换成自己的实际参数就可以了!

给个关注吧

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是java实现oss文件上传的示例代码: ``` import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.common.utils.IOUtils; import com.aliyun.oss.model.ObjectMetadata; import com.aliyun.oss.model.PutObjectRequest; import com.aliyun.oss.model.PutObjectResult; import java.io.FileInputStream; import java.io.InputStream; public class OSSUploadDemo { public static void main(String[] args) { String endpoint = "<yourEndpoint>"; String accessKeyId = "<yourAccessKeyId>"; String accessKeySecret = "<yourAccessKeySecret>"; String bucketName = "<yourBucketName>"; String objectName = "<yourObjectName>"; String filePath = "<yourFilePath>"; // 创建OSSClient实例 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); try { // 创建上传请求 PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new FileInputStream(filePath)); // 设置上传文件的元信息 ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentLength(putObjectRequest.getInputStream().available()); putObjectRequest.setMetadata(metadata); // 执行上传操作并返回结果 PutObjectResult putObjectResult = ossClient.putObject(putObjectRequest); System.out.println("上传成功:" + putObjectResult.getETag()); } catch (Exception e) { System.out.println("上传失败:" + e.getMessage()); } finally { // 关闭OSSClient实例 ossClient.shutdown(); } } } ``` 其中,需要替换的变量如下: - `endpoint`:OSS服务的访问域名,例如`http://oss-cn-hangzhou.aliyuncs.com` - `accessKeyId`:访问OSS服务的AccessKeyId - `accessKeySecret`:访问OSS服务的AccessKeySecret - `bucketName`:存储文件的Bucket名称 - `objectName`:上传文件在Bucket中的Object名称 - `filePath`:要上传的文件路径

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值