本文介紹使用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配置項的更多信息,請參見配置項。
文檔內容是否對您有幫助?