03_阿里云_配置OSS环境变量

关于aliyunOSS文件上传的系统变量配置

问题引出

黑马程序员2023新版JavaWeb开发教程教程中,P148Day11-04. 案例-文件上传-阿里云OSS-准备P150Day11-06. 案例-文件上传-阿里云OSS-集成阿里云给的参考代码已经更新了,需要配置阿里云的用户变量(Windows的用户变量)才能继续使用。

问题描述:

关于aliyunOSS文件上传出现Access key id should not be null or empty的问题

从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。

shell 复制代码
Exception in thread "main" com.aliyun.oss.common.auth.InvalidCredentialsException: Access key id should not be null or empty.

aliyunOSS上传文件流官方示例代码

以下代码用于将文件流上传到目标存储空间examplebucket中exampledir目录下的exampleobject.txt文件。

官方示例:https://help.aliyun.com/zh/oss/developer-reference/java/?spm=a2c4g.11186623.0.0.6a097713R2kfVB

java 复制代码
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import java.io.FileInputStream;
import java.io.InputStream;

public class Demo {

    public static void main(String[] args) throws Exception {
        // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // 填写Bucket名称,例如examplebucket。
        String bucketName = "examplebucket";
        // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
        String objectName = "exampledir/exampleobject.txt";
        // 填写本地文件的完整路径,例如D:\\localpath\\examplefile.txt。
        // 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
        String filePath= "D:\\localpath\\examplefile.txt";

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

        try {
            InputStream inputStream = new FileInputStream(filePath);
            // 创建PutObjectRequest对象。
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream);
            // 创建PutObject请求。
            PutObjectResult result = ossClient.putObject(putObjectRequest);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
} 

方案1:使用shell命令创建环境变量

首次配置配置成功后需要重启电脑,环境变量的值才能够获取到,否则就会出现Access key id should not be null or empty的问题

1.win+R输入cmd,回车,打开命令行。

2.执行以下命令配置RAM用户的访问密钥。

shell 复制代码
set OSS_ACCESS_KEY_ID=AccessKey ID
set OSS_ACCESS_KEY_SECRET=AccessKey Secret

3.执行以下命令以使更改生效。

shell 复制代码
setx OSS_ACCESS_KEY_ID "%OSS_ACCESS_KEY_ID%"
setx OSS_ACCESS_KEY_SECRET "%OSS_ACCESS_KEY_SECRET%"

4.执行以下命令验证环境变量配置。

shell 复制代码
echo %OSS_ACCESS_KEY_ID%
echo %OSS_ACCESS_KEY_SECRET%

5.示例

6.重启电脑

方案2:使用视图工具添加环境变量

1.在设置中搜索环境变量

2.点新建用户变量

3.新建用户变量

变量名:OSS_ACCESS_KEY_ID

变量值:AccessKey ID(阿里云中AccessKey管理中获取)

4.新建用户变量

变量名:OSS_ACCESS_KEY_SECRET

变量值:AccessKey Secret(阿里云中AccessKey管理中获取)

5.最后确认创建环境变量

6.重启电脑

相关推荐
梦想的颜色5 小时前
2026 国产大模型硬核横评|阿里云百炼(通义 Qwen3.7 Max)VS DeepSeek V4-Pro:平台、定价、吞吐、能力、工程落地全方位对比
阿里云·通义千问·阿里云百炼·deepseek v4-pro·qwen3.7·llm 吞吐量实测·#企业 maas 平台横评
栈溢出的浪漫7 小时前
2026 WAIC 直击丨阿里云全栈AI落地:从芯片算力到智能体原生云
阿里云·全栈ai·2026waic·智能体原生云·大模型产业化
阿里云云原生17 小时前
AI Agent 上线容易稳定难?阿里云 AgentLoop 推出“经验自进化”闭环治理方案
人工智能·阿里云·mybatis·agentscope
Cloud云卷云舒18 小时前
PolarDB(阿里云)VS HaishanDB(海山数据库,移动云)的AI能力全面对比
数据库·阿里云·ai-native·polardb·haishandb
忘路之远近i19 小时前
受够阿里云自带终端后,我用 Cursor + grill-me 做了个运维面板
服务器·开发语言·人工智能·python·阿里云·云计算
Amazing_Lv19 小时前
MA2与MA 3D连接方法详解
阿里云
全云在线allcloudonline2 天前
江苏阿里云代理商怎么选?现有服务点、南京节点与项目交付
阿里云·云计算·企业上云
全云在线allcloudonline2 天前
湖北阿里云代理商怎么选?现有服务点、武汉节点与项目交付
阿里云·云计算·企业上云
全云在线allcloudonline2 天前
陕西阿里云代理商怎么选?现有服务点、西安节点与项目交付
阿里云·云计算·企业上云