Java使用阿里云OSS上传图片

该博客介绍了两种使用Java阿里云OSS SDK上传文件到阿里云存储的方法,包括设置endpoint、accessKey和bucketName,以及如何处理文件名避免覆盖,并提供了生成预签名URL的示例。
摘要由CSDN通过智能技术生成

添加依赖

<!--阿里云存储-->
		<dependency>
			<groupId>com.aliyun.oss</groupId>
			<artifactId>aliyun-sdk-oss</artifactId>
			<version>3.10.2</version>
		</dependency>
		<!-- 日期工具栏依赖 -->
		<dependency>
			<groupId>joda-time</groupId>
			<artifactId>joda-time</artifactId>
			<version>2.2</version>
		</dependency>

方式一

public String addAli(MultipartFile file){
        String endpoint = "oss-xxxxxxxxxxxxcs.com";
        String accessKeyId = "LTxxxxxxxxxxxvug";
        String accessKeySecret = "L9bxxxxxxxxxxxxxxxxxLnq";
        String backetName = "jxxxxxxxxxxxxmg";

        String uploadUrl = null;
        try {
            // 创建OSSClient实例
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            InputStream inputStream = file.getInputStream();
            String filename = file.getOriginalFilename();
            // 在文件名称中添加随机的唯一的值,防止名称一样时文件的覆盖
            String uuid = UUID.randomUUID().toString().replaceAll("-","");
            // 文件类型
            String fileType = filename.substring(filename.lastIndexOf("."));
            filename = uuid + fileType;

            // 把文件安装日期进行分类,会自动创建文件夹
            String datePath = new DateTime().toString("yyyy/MM/dd");
            filename = datePath + "/" + filename;

            ossClient.putObject(backetName, filename, inputStream);

            // 关闭OSSClient
            ossClient.shutdown();

            // 上传文件之后的路径,自己拼接
            uploadUrl = "https://"+backetName+"."+endpoint+"/"+filename;

        } catch (IOException e) {
            e.printStackTrace();
        }
        return uploadUrl;
    }

方式二

public AjaxResult addAli(MultipartFile file){
        String endpoint = "http://cdn.xxxxxxx.com";
        String accessKeyId = "LTxxxxxxxxxxxxxxxxxxxgou";
        String accessKeySecret = "gxxxxxxxxxxx3QH";
        String bucketName = "mxxxxxxxxxxxxxxxxt";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String uploadUrl = null;
        try {
            if (file == null || file.getSize() <= 0){
                return AjaxResult.error("图片不能为空");
            }

            // 获取上传文件的输入流
            InputStream inputStream = file.getInputStream();
            // 获取文件名称
            String fileName = file.getOriginalFilename();
            // 获取文件的后缀名
            String suffixName = fileName.substring(fileName.lastIndexOf("."));
            // 生成上传文件名
            String finalFileName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + suffixName;
            String objectName = sdf.format(new Date()) + "/" + finalFileName;

            OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
            ossClient.putObject(bucketName, objectName, inputStream);

            // 设置URL过期时间为6小时
            Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000 * 6);
            // 生成以GET方法访问的签名URL,可以直接通过浏览器访问相关内容
            URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration);
            // 关闭OSSClient。
            ossClient.shutdown();
            uploadUrl = url.toString();
            System.out.println(uploadUrl);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return AjaxResult.success(uploadUrl);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值