全部產品
Search
文件中心

Object Storage Service:Node.js常見問題

更新時間:Feb 28, 2024

本文介紹使用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配置項的更多資訊,請參見配置項