このトピックでは、OSS SDK for Node.js の使用時によくある質問とその回答について説明します。
「The region must be conform to the specifications」というエラーメッセージが返された場合の対処方法
このエラーは、Region パラメーターが無効なために発生します。Region パラメーターの値が有効であるか確認してください。リージョン ID の詳細については、「リージョンとエンドポイント」をご参照ください。
HTTPS アクセスを有効にする方法
HTTPS アクセスを有効にするには、OSS SDK for Node.js の初期化時に secure を true に設定します。
アップロード進捗の取得方法
マルチパートアップロード (Node.js SDK) を実行する際に、progress パラメーターを使用してアップロード進捗を取得できます。
ダウンロード進捗の取得方法
OSS SDK for Node.js では、ダウンロードトラフィックのサイズに基づいて進捗を計算できます。
Base64 エンコードされたイメージのアップロード方法
イメージを File オブジェクトに変換し、対応する API 操作を呼び出して 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)
});
指定したディレクトリへのオブジェクトのアップロード方法
アップロードするオブジェクトの名前にディレクトリのプレフィックスを追加するだけです。詳細については、「OSS とファイルシステムの比較」をご参照ください。
const OSS = require("ali-oss");
const client = new OSS({
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを 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 リクエストを構築する際は、API 操作で指定された順序で Key、OSSAccessKeyId、policy、Signature パラメーターを設定する必要があります。操作の詳細については、「PostObject」をご参照ください。
オブジェクトの署名付き URL の取得方法
signatureUrl メソッドを呼び出して、ダウンロード URL を取得できます。詳細については、GitHub の例をご参照ください。
1 GB を超えるオブジェクトのダウンロード時のエラー:「Response timeout for 60000ms, please increase the timeout or use multipartDownload.」
OSS SDK for Node.js がダウンロードタスクを実行するためのタイムアウト期間は 60000 ms です。1 GB を超えるオブジェクトをダウンロードする際にタイムアウトエラーが発生した場合は、ストリーミングダウンロードを実行してオブジェクトを増分でダウンロードし、タイムアウト期間を適切に延長してください。ストリーミングダウンロードの詳細については、「ストリーミングダウンロード (Node.js SDK)」をご参照ください。タイムアウトパラメーターの詳細については、「パラメーター」をご参照ください。