全部产品
对象存储 OSS

下载文件

更新时间:2017-06-07 13:26:11   分享:   

用户可以通过以下方式从OSS中下载文件:

  • 下载到本地文件
  • 流式下载
  • 下载到Buffer
  • HTTP下载(浏览器下载)

下载到本地文件

通过get接口来下载Object到一个本地文件:

  1. var co = require('co');
  2. var OSS = require('ali-oss');
  3. var client = new OSS({
  4. region: '<Your region>',
  5. accessKeyId: '<Your AccessKeyId>',
  6. accessKeySecret: '<Your AccessKeySecret>',
  7. bucket: 'Your bucket name'
  8. });
  9. co(function* () {
  10. var result = yield client.get('object-key', 'local-file');
  11. console.log(result);
  12. }).catch(function (err) {
  13. console.log(err);
  14. });

流式下载

使用getStream来下载文件时,返回一个Readable Stream,用户可以流式地处理文件内容。

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

下载Buffer

用户也可以通过get接口简单地将文件内容下载到Buffer中:

  1. var co = require('co');
  2. var OSS = require('ali-oss');
  3. var client = new OSS({
  4. region: '<Your region>',
  5. accessKeyId: '<Your AccessKeyId>',
  6. accessKeySecret: '<Your AccessKeySecret>',
  7. bucket: 'Your bucket name'
  8. });
  9. co(function* () {
  10. var result = yield client.get('object-key');
  11. console.log(result.content);
  12. }).catch(function (err) {
  13. console.log(err);
  14. });

HTTP下载

对于存放在OSS中的文件,在不用SDK的情况下用户也可以直接使用HTTP下载,这包括直接使用浏览器下载,或者使用wget, curl等命令行工具下载。这时文件的URL需要由SDK生成。使用signatureUrl方法生成可下载的HTTP地址,URL的有效时间默认为半个小时:

  1. var co = require('co');
  2. var OSS = require('ali-oss');
  3. var client = new OSS({
  4. region: '<Your region>',
  5. accessKeyId: '<Your AccessKeyId>',
  6. accessKeySecret: '<Your AccessKeySecret>',
  7. bucket: 'Your bucket name'
  8. });
  9. var url = client.signatureUrl('object-key');
  10. console.log(url);
  11. var url = client.signatureUrl('object-key', {expires: 3600});
  12. console.log(url);
  13. // signed URL for PUT
  14. var url = client.signatureUrl('object-key', {method: 'PUT'});
  15. console.log(url);
本文导读目录
本文导读目录
以上内容是否对您有帮助?