更新时间:2026-05-28 GMT+08:00
使用MD5校验文件一致性
您可以通过以下接口在上传对象时使用md5校验文件一致性:
代码样例一:文本上传
本示例用于上传文本时使用md5校验数据一致性。
// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。
// 前端本身没有process对象,可以使用webpack类打包工具定义环境变量,就可以在代码中运行了。
// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
const AK = process.env.AccessKeyID
const SK = process.env.SecretAccessKey
// 【可选】如果使用临时AKSK和SecurityToken访问OBS,则同样推荐通过环境变量获取
const security_token= process.env.SecurityToken
// server填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。
const server = "https://obs.cn-north-4.myhuaweicloud.com"
// 创建ObsClient实例
var obsClient = new ObsClient({
access_key_id: AK,
secret_access_key: SK,
server: server
});
async function putContent() {
try {
var content = 'Hello OBS';
const params = {
Bucket: 'examplebucket',
Key: 'objectname',
Body: content,
ContentMD5: "content_base64MD5"
};
// 上传文本并校验一致性
const result = await obsClient.putObject(params);
if (result.CommonMsg.Status <= 300) {
console.log("Put object(%s)'s successful!", params.Key);
console.log("RequestId: %s", result.CommonMsg.RequestId);
return;
};
console.log("An ObsError was found, which means your request sent to OBS was rejected with an error response.");
console.log("Status: %d", result.CommonMsg.Status);
console.log("Code: %s", result.CommonMsg.Code);
console.log("Message: %s", result.CommonMsg.Message);
console.log("RequestId: %s", result.CommonMsg.RequestId);
} catch (error) {
console.log("An Exception was found, which means the client encountered an internal problem when attempting to communicate with OBS, for example, the client was unable to access the network.");
console.log(error);
};
};
putContent() 代码样例二:文件上传
本示例用于上传文件时使用md5校验数据一致性。
// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。
// 前端本身没有process对象,可以使用webpack类打包工具定义环境变量,就可以在代码中运行了。
// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
const AK = process.env.AccessKeyID
const SK = process.env.SecretAccessKey
// 【可选】如果使用临时AKSK和SecurityToken访问OBS,则同样推荐通过环境变量获取
const security_token= process.env.SecurityToken
// server填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。
const server = "https://obs.cn-north-4.myhuaweicloud.com"
// 创建ObsClient实例
var obsClient = new ObsClient({
access_key_id: AK,
secret_access_key: SK,
server: server
});
async function putFile() {
try {
const params = {
Bucket: 'examplebucket',
Key: 'objectname',
SourceFile: document.getElementById('file').files[0],
ContentMD5:'file_base64MD5'
};
// 上传本地文件并校验一致性
const result = await obsClient.putObject(params);
if (result.CommonMsg.Status <= 300) {
console.log("Put object(%s)'s successful!", params.Key);
console.log("RequestId: %s", result.CommonMsg.RequestId);
return;
};
console.log("An ObsError was found, which means your request sent to OBS was rejected with an error response.");
console.log("Status: %d", result.CommonMsg.Status);
console.log("Code: %s", result.CommonMsg.Code);
console.log("Message: %s", result.CommonMsg.Message);
console.log("RequestId: %s", result.CommonMsg.RequestId);
} catch (error) {
console.log("An Exception was found, which means the client encountered an internal problem when attempting to communicate with OBS, for example, the client was unable to access the network.");
console.log(error);
};
};
putFile() 代码样例三:追加上传
本示例用于追加上传时使用md5校验数据一致性。
// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。
// 前端本身没有process对象,可以使用webpack类打包工具定义环境变量,就可以在代码中运行了。
// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
const AK = process.env.AccessKeyID
const SK = process.env.SecretAccessKey
// 【可选】如果使用临时AKSK和SecurityToken访问OBS,则同样推荐通过环境变量获取
const security_token= process.env.SecurityToken
// server填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。
const server = "https://obs.cn-north-4.myhuaweicloud.com"
// 创建ObsClient实例
var obsClient = new ObsClient({
access_key_id: AK,
secret_access_key: SK,
server: server
});
async function appendObject() {
try {
const params = {
Bucket: 'examplebucket',
Key: 'objectname',
Position: 0,
Body: 'Hello OBS',
ContentMD5:'content_base64MD5'
};
// 追加上传并校验一致性
const result = await obsClient.appendObject(params);
if (result.CommonMsg.Status <= 300) {
console.log("Append object(%s)'s successful!", params.Key);
console.log("RequestId: %s", result.CommonMsg.RequestId);
return;
};
console.log("An ObsError was found, which means your request sent to OBS was rejected with an error response.");
console.log("Status: %d", result.CommonMsg.Status);
console.log("Code: %s", result.CommonMsg.Code);
console.log("Message: %s", result.CommonMsg.Message);
console.log("RequestId: %s", result.CommonMsg.RequestId);
} catch (error) {
console.log("An Exception was found, which means the client encountered an internal problem when attempting to communicate with OBS, for example, the client was unable to access the network.");
console.log(error);
};
};
appendObject() 代码样例四:上传段
本示例用于上传段时使用md5校验数据一致性。
// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。
// 前端本身没有process对象,可以使用webpack类打包工具定义环境变量,就可以在代码中运行了。
// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
const AK = process.env.AccessKeyID
const SK = process.env.SecretAccessKey
// 【可选】如果使用临时AKSK和SecurityToken访问OBS,则同样推荐通过环境变量获取
const security_token= process.env.SecurityToken
// server填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。
const server = "https://obs.cn-north-4.myhuaweicloud.com"
// 创建ObsClient实例
var obsClient = new ObsClient({
access_key_id: AK,
secret_access_key: SK,
server: server
});
const PartSize = 5 * 1024 * 1024;
const lastPartSize = file.size % PartSize;
// 段数量
const count = Math.ceil(file.size / PartSize);
async function uploadPart(n) {
try {
const params = {
Bucket: 'examplebucket',
Key: 'exampleobject',
// 设置分段号,范围是1~10000
PartNumber: n,
// 设置Upload ID
UploadId: 'upload id from initiateMultipartUpload',
// 设置将要上传的大文件
SourceFile: document.getElementById('input-file').files[0],
// 设置分段大小
PartSize: count === n ? lastPartSize : PartSize,
// 设置分段的起始偏移大小
Offset: (n-1) * PartSize,
ContentMD5:'part_base64MD5'
};
// 断点续传上传文件并校验一致性
const result = await obsClient.uploadPart(params);
if (result.CommonMsg.Status <= 300) {
console.log("Upload part(%s)'s successful!", n);
console.log("RequestId: %s", result.CommonMsg.RequestId);
return;
};
console.log("An ObsError was found, which means your request sent to OBS was rejected with an error response.");
console.log("Status: %d", result.CommonMsg.Status);
console.log("Code: %s", result.CommonMsg.Code);
console.log("Message: %s", result.CommonMsg.Message);
console.log("RequestId: %s", result.CommonMsg.RequestId);
} catch (error) {
console.log("An Exception was found, which means the client encountered an internal problem when attempting to communicate with OBS, for example, the client was unable to access the network.");
console.log(error);
};
};
uploadPart(1) 代码样例五:断点续传上传
本示例用于断点续传上传时使用md5校验每个段数据的一致性。
// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。
// 前端本身没有process对象,可以使用webpack类打包工具定义环境变量,就可以在代码中运行了。
// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
const AK = process.env.AccessKeyID
const SK = process.env.SecretAccessKey
// 【可选】如果使用临时AKSK和SecurityToken访问OBS,则同样推荐通过环境变量获取
const security_token= process.env.SecurityToken
// server填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。
const server = "https://obs.cn-north-4.myhuaweicloud.com"
// 创建ObsClient实例
var obsClient = new ObsClient({
access_key_id: AK,
secret_access_key: SK,
server: server
});
async function uploadFile() {
try {
const params = {
Bucket: 'examplebucket',
Key: 'objectname',
SourceFile: document.getElementById('file').files[0],
PartSize: 9 * 1024 * 1024,
// 是否开启每个分段的一致性校验, 开启该功能后会对上传整体性能造成一定的负项影响,且会使得浏览器消耗更多的CPU和内存资源。
VerifyMd5: true,
TaskNum: 6
};
// 断点续传上传文件并校验一致性
const result = await obsClient.uploadFile(params);
if (result.CommonMsg.Status <= 300) {
console.log("Upload file(%s)'s successful!", params.Key);
console.log("RequestId: %s", result.CommonMsg.RequestId);
return;
};
console.log("An ObsError was found, which means your request sent to OBS was rejected with an error response.");
console.log("Status: %d", result.CommonMsg.Status);
console.log("Code: %s", result.CommonMsg.Code);
console.log("Message: %s", result.CommonMsg.Message);
console.log("RequestId: %s", result.CommonMsg.RequestId);
} catch (error) {
console.log("An Exception was found, which means the client encountered an internal problem when attempting to communicate with OBS, for example, the client was unable to access the network.");
console.log(error);
};
};
uploadFile() 父主题: 一致性校验