详情页标题前

阿里云对象存储OSSNode.js流式上传-云淘科技

详情页1

本文介绍如何将文件流、网络流等数据流以流式上传的方式上传到存储空间(Bucket)中的文件(Object)。

上传文件流

以下代码用于将文件流上传到目标存储空间examplebucket中exampledir目录下的exampleobject.txt文件。

const OSS = require('ali-oss');
const fs = require('fs');
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名称,例如examplebucket。
  bucket: 'examplebucket',
});

async function putStream () {
  try {
    // 使用chunked encoding。使用putStream接口时,SDK默认会发起一个chunked encoding的HTTP PUT请求。
    // 填写本地文件的完整路径,从本地文件中读取数据流。
    // 如果本地文件的完整路径中未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
    let stream = fs.createReadStream('D:\localpath\examplefile.txt');
    // 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
    let result = await client.putStream('exampledir/exampleobject.txt', stream);    

    // 不使用chunked encoding。如果在options指定了contentLength参数,则不会使用chunked encoding。
    // let stream = fs.createReadStream('D:\localpath\examplefile.txt');
    // let size = fs.statSync('D:\localpath\examplefile.txt').size;
    // let result = await client.putStream(
    // stream参数可以是任何实现了Readable Stream的对象,包含文件流,网络流等。
    // 'exampledir/exampleobject.txt', stream, {contentLength: size}); 
    console.log(result); 
  } catch (e) {
    console.log(e)
  }
}

putStream();        

上传网络流

以下代码用于将网络流上传到目标存储空间examplebucket中exampledir目录下的exampleobject.txt文件。

const OSS = require("ali-oss");
const fs = require("fs");
const urllib = require("urllib"); 

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名称,例如examplebucket。
  bucket: 'examplebucket',
});

// 指定网络流URL。
const url = "http://www.yunxiaoer.com/wp-content/uploads/2023/12/20231209171959-6574a1bf9324f.jpg";
// 导入双工流。
// stream参数可以是任何实现了Readable Stream的对象,包含文件流,网络流等。
const Duplex = require("stream").Duplex;
// 实例化双工流。
let stream = new Duplex();

urllib.request(url, (err, data, res) => {
  if (!err) {
    // 通过双工流接收数据。
    stream.push(data);
    stream.push(null);

    client
      // 填写Object完整路径,例如example.png。Object完整路径中不能包含Bucket名称。
      .putStream("example.png", stream)
      .then((r) => console.log(r))
      .catch((e) => console.log(e));
  }
});

相关文档

关于流式上传的完整示例代码,请参见GitHub示例。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/158470.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云对象存储OSS监控服务概览-云淘科技

    OSS监控服务为您提供系统基本运行状态、性能以及计量等方面的监控数据指标,并且提供自定义报警服务,帮助您跟踪请求、分析使用情况、统计业务趋势,及时发现以及诊断系统的相关问题。 OSS监控指标主要分为基础服务指标、性能指标和计量指标,详见OSS监控指标参考。 高实时性 高实时性能够暴露可能隐藏的峰谷问题,显示出实际的波动情况,有助于分析和评估业务场景。OSS监…

    阿里云对象存储 2023年12月10日
  • 阿里云对象存储OSSiOS断点续传下载-云淘科技

    断点续传下载是指客户端在从网络上下载资源时,由于某种原因中断下载。再次开启下载时可以从已下载完成的部分开始继续下载未完成的部分,从而节省时间和流量。 流程说明 在手机端使用App下载视频时,下载期间如果从Wifi模式切换到移动网络,App默认会中断下载。开启断点续传下载后,当您从移动网络再次切换到Wifi模式时,即可从上一次中断的位置继续下载。 执行断点续传…

    2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云对象存储OSS教程示例:通过Bucket Policy限制公网访问OSS-云淘科技

    Bucket Policy是阿里云对象存储OSS推出的针对存储空间(Bucket)的授权策略,您可以通过Bucket Policy禁止指定的RAM用户通过公网访问您指定的OSS资源。 场景描述 企业A在华东1(杭州)地域创建了名为examplebucket的存储空间,examplebucket的目录examplefolder下存放了大量的企业内部资料。企业A…

    阿里云对象存储 2023年12月10日
  • 阿里云对象存储OSS同步处理-云淘科技

    同步处理(x-oss-process)适用于可以快速返回结果的场景,例如图片处理、文档处理等。本文介绍如何使用文件URL、API和SDK等方式对存储于对象存储OSS中的文件进行同步处理。 支持的处理操作 图片处理:图片缩放、图片水印等。更多信息,请参见处理参数。 文档处理:文档在线预览、文档在线编辑。更多信息,请参见文档在线预览和文档在线编辑。 媒体处理:视…

    阿里云对象存储 2023年12月10日
  • 阿里云对象存储OSSJava管理文件元信息-云淘科技

    文件元信息是对文件的属性描述,包括HTTP标准属性(HTTP Header)和用户自定义元数据(User Meta)两种。您可以通过设置文件HTTP头来自定义HTTP请求的策略,例如文件(Object)缓存策略、强制下载策略等。您还可以通过设置用户自定义元数据来标识Object的用途或属性等。 注意事项 本文以华东1(杭州)外网Endpoint为例。如果您希…

    阿里云对象存储 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。