本文介绍使用OSS Node.js SDK的常见问题及解决方法。
调用代码时报错“The region must be conform to the specifications”
您好,该问题原因是Region参数不符合规范,请检查Region填写是否正确。关于Region ID的更多信息,请参见访问域名和数据中心。
如何进行HTTPS访问
初始化SDK时指定secure的值为true,则默认通过HTTPS访问。
如何获取上传进度
使用分片上传时,可通过progress参数获取上传进度。
如何获取下载进度
Node.js SDK中可根据下载流的大小来计算进度。
如何上传base64编码的图片
将base64内容转换成File对象,再调用接口上传至OSS服务器。
function dataURLtoFile(dataurl, filename) {
let arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
while(n--){
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr], filename, {type:mime});
}
let file = dataURLtoFile('base64 content', '');
client.multipartUpload('oss file name', file).then( (res)=> {
console.log(res)
}).catch((err) => {
console.log(err)
});
如何上传文件到指定目录
给要上传的Object名称前加指定目录前缀即可。更多信息,可参见OSS 和文件系统对比。
const OSS = require("ali-oss");
const client = new OSS({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: 'yourregion',
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
// 填写存储空间名称。
bucket: 'yourbucketname'
});
client
.multipartUpload("base-dir/" + "object-name", "local-file", {
progress: async function (p) {
console.log("Progress: " + p);
},
})
.then((result) => {
console.log(result);
})
.then((res) => {
console.log(res);
})
.catch((err) => {
console.log(err);
});
如何生成签名URL用于上传文件
当您使用PUT方法上传文件时,需要生成签名URL。更多信息,请参见使用签名URL进行临时授权。
POST上传不支持使用签名URL。您可以通过构造POST请求直接上传文件,构造POST请求时需要按照接口定义的顺序配置Key、OSSAccessKeyId、policy和Signature参数。更多信息,请参见PostObject。
如何获取Object的签名URL
您可以调用signatureUrl
方法,获取下载地址。更多信息,可参见GitHub示例。
下载Object超过1 GB报错Response timeout for 60000ms, please increase the timeout or use multipartDownload.
Node.js SDK默认下载操作的超时时间为60000ms。当您下载Object超过1 GB时出现超时报错时,请使用流式下载的方式下载Object,并适当提高timeout配置项的超时时间。关于timeout配置项的更多信息,请参见配置项。
文档内容是否对您有帮助?