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

下載檔案

更新時間: Oct 30, 2018

使用者可以通過以下方式從OSS中下載檔案:

  • 下載到本地檔案
  • 流式下載
  • 下載到Buffer
  • HTTP下載(瀏覽器下載)

下載到本地檔案

通過get介面來下載Object到一個本地檔案:

  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. async function get () {
  9. try {
  10. let result = await client.get('object-key', 'local-file');
  11. console.log(result);
  12. } catch (e) {
  13. console.log(e);
  14. }
  15. }
  16. get();

流式下載

使用getStream來下載檔案時,返回一個Readable Stream,使用者可以流式地處理檔案內容。

  1. let OSS = require('ali-oss');
  2. let fs = require('fs');
  3. let client = new OSS({
  4. region: '<Your region>',
  5. accessKeyId: '<Your AccessKeyId>',
  6. accessKeySecret: '<Your AccessKeySecret>',
  7. bucket: 'Your bucket name'
  8. });
  9. async function getStream () {
  10. try {
  11. let result = await client.getStream('object-key');
  12. console.log(result);
  13. let writeStream = fs.createWriteStream('local-file');
  14. result.stream.pipe(writeStream);
  15. } catch (e) {
  16. console.log(e);
  17. }
  18. }
  19. getStream()

下載Buffer

使用者也可以通過get介面簡單地將檔案內容下載到Buffer中:

  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. async function getBuffer () {
  9. try {
  10. let result = await client.get('object-key');
  11. console.log(result.content);
  12. } catch (e) {
  13. console.log(e);
  14. }
  15. }
  16. getBuffer();

HTTP下載

對於存放在OSS中的檔案,在不用SDK的情況下使用者也可以直接使用HTTP下載,這包括直接使用瀏覽器下載,或者使用wget, curl等命令列工具下載。這時文件的URL需要由SDK生成。使用signatureUrl方法生成可下載的HTTP地址,URL的有效時間預設為半個小時:

  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. let url = client.signatureUrl('object-key');
  9. console.log(url);
  10. let url = client.signatureUrl('object-key', {expires: 3600});
  11. console.log(url);
  12. // signed URL for PUT
  13. let url = client.signatureUrl('object-key', {method: 'PUT'});
  14. console.log(url);