阿里雲團隊努力不懈,力求將最新的技術內容更快地以您最熟悉的語言呈現。本文由簡體中文內容自動轉碼而成,過程無人工干預。阿里雲不保證此自動轉碼的準確性、完整性及時效性。因轉碼造成的任何內容錯誤及因此可能帶來的損失,阿里雲概不負責,敬請見諒。本文内容請以簡體中文版本為準。
全部產品
Search
文件中心

常見問題

更新時間: Oct 30, 2018

如何調用 STS

瀏覽器是不受信任的環境,如果把 AccessKeyId 和 AccessKeySecret 直接保存在瀏覽器端,存在極高的風險。建議在瀏覽器環境下使用 STS 模式進行 OSS 介面調用。

瀏覽器中使用 STS Server 相關文檔

獲取 STS token 後,就可進行 SDK 初始化操作。

  1. <script type="text/javascript">
  2. $.ajax("http://your_sts_server/",{method: 'GET'},function (err, result) {
  3. let client = new OSS({
  4. accessKeyId: result.AccessKeyId,
  5. accessKeySecret: result.AccessKeySecret,
  6. stsToken: result.SecurityToken,
  7. endpoint: '<oss endpoint>',
  8. bucket: '<Your bucket name>'
  9. });
  10. });
  11. </script>

如何 HTTPS 訪問

初始化 SDK 時,可傳入以下幾個參數:

  • region: 參數是指您申請 OSS 服務時的區域,例如oss-cn-hangzhou。完整的區域列表可以在 OSS 服務節點查看。
  • internal: 配合region使用,如果指定 internaltrue,則訪問內網節點。
  • secure: 配合region使用,如果指定了securetrue,則使用 HTTPS 訪問。
  • endpoint: 例如http://oss-cn-hangzhou.aliyuncs.com,如果指定了endpoint,則region會被忽略,endpoint可以指定HTTPS,也可以是IP形式。

瀏覽器跨域問題如何解決

在瀏覽器中使用 SDK 前,先要設定 Bucket 的 CORS 屬性。具體步驟,請查看相關文檔

如何設定上傳檔案的使用者自訂資料(meta),檔案類型(mime)和要求標頭(header)

參考瀏覽器分區上傳

關於瀏覽器端斷點續傳的說明

可以將checkpoint保存到瀏覽器的localstorage,下次再調用的時候傳入checkpoint參數,就可以實現斷點續傳功能。

如何獲取上傳進度

使用分區上傳時,可獲取上傳進度。相關文檔

如何獲取下載進度

瀏覽器中無法獲取進度,可調用 signatureUrl 方法,獲取下載地址,可查看相關文檔

如何上傳檔案到指定目錄

給要上傳的 object 名稱前加指定目錄首碼即可,可參考: OSS 和檔案系統對比

  1. let OSS = require('ali-oss')
  2. let client = new OSS({
  3. region: '<Your region>',
  4. accessKeyId: '<Your AccessKeyId>',
  5. accessKeySecret: '<Your AccessKeySecret>',
  6. bucket: 'Your bucket name'
  7. });
  8. client.multipartUpload('base-dir/' +'object-key', 'local-file', {
  9. progress: async function (p) {
  10. console.log('Progress: ' + p);
  11. }
  12. });
  13. console.log(result);
  14. }).catch((err) => {
  15. console.log(err);
  16. });

如何上傳base64編碼的圖片

base64先轉碼成指定格式圖片,然後調用OSS上傳介面進行上傳,具體可參考Github樣本

  1. /**
  2. * base64 to file
  3. * @param dataurl base64 content
  4. * @param filename set up a meaningful suffix, or you can set mime type in options
  5. * @returns {File|*}
  6. */
  7. const dataURLtoFile = function dataURLtoFile(dataurl, filename) {
  8. const arr = dataurl.split(',');
  9. const mime = arr[0].match(/:(.*?);/)[1];
  10. const bstr = atob(arr[1]);
  11. let n = bstr.length;
  12. const u8arr = new Uint8Array(n);
  13. while (n--) {
  14. u8arr[n] = bstr.charCodeAt(n);
  15. }
  16. return new Blob([u8arr], { type: mime });// if env support File, also can use this: return new File([u8arr], filename, { type: mime });
  17. };
  18. // client表示OSS client執行個體
  19. const uploadBase64Img = function uploadBase64Img(client) {
  20. // base64格式的內容
  21. const base64Content = 'data:image:xxxxxxxxxxxxx';
  22. const filename = 'img.png';
  23. const imgfile = dataURLtoFile(base64Content, filename);
  24. //key表示上傳的object key ,imgFile表示dataURLtoFile處理後返回的圖片
  25. client.multipartUpload(key, imgfile).then((res) => {
  26. console.log('upload success: %j', res);
  27. }).catch((err) => {
  28. console.error(err);
  29. });
  30. };

如何限制上傳檔案的大小

在瀏覽器中可以根據document.getElementById(“file”).files[0].size 獲取上傳檔案的大小(位元組數),可參考web直傳的post請求。

如何獲取object的簽名URL

可調用 signatureUrl 方法,獲取下載地址,可查看相關文檔

如何使用sdk生成的簽名URL並進行資源上傳

簽名URL常用於授權給第三方進行資源的下載和上傳操作。下載請參見上一條。sdk中提供signatureUrl API,用於返回一個經過簽名的url,使用者直接使用這個url上傳或者下載資源即可。利用簽名URL上傳資源請參考sdk工程樣本:簽名url上傳資源樣本

如何使用表單上傳方式上傳資源到OSS伺服器

可參考 Web 端直傳實踐

常見錯誤參考