详情页标题前

阿里云对象存储OSSBrowser.js快速入门-云淘科技

详情页1

本文介绍如何在Browser.js SDK中快速使用OSS服务,包括上传文件、下载文件和查看文件列表等。

前提条件

  • 已安装Browser.js SDK。具体操作,请参见Browser.js安装。

  • 已配置跨域资源共享(CORS)规则。具体操作,请参见准备工作。

注意事项

  • 目前浏览器中不允许执行Bucket相关的操作,仅允许执行Object相关的操作,例如PutObject、GetObject等。

  • 由于Browser.js SDK通常在浏览器环境下使用,为避免暴露阿里云账号访问密钥(AccessKey ID和AccessKey Secret),强烈建议您使用临时访问凭证的方式执行OSS相关操作。

    临时访问凭证包括临时访问密钥(AccessKey ID和AccessKey Secret)和安全令牌(SecurityToken)。获取临时访问凭证的具体操作,请参见使用STS进行临时授权。

常见操作

以下为Browser.js SDK的常见操作。

搭建STS Server并从客户端获取临时授权信息

  1. 搭建STS Server。

    为方便您搭建STS Server,OSS提供了多个语言SDK demo。

    • Node.js

    • PHP

    • Java

    • Ruby

    重要

    以上demo仅供参考,在具体的生产环境中,请自行开发鉴权等业务所需代码。

  2. 通过浏览器向搭建的STS服务发起请求,获取STS临时授权信息。

    
    
      
        
        Document
      
      
        
        
          // OSS.urllib是SDK内部封装的发送请求的逻辑,开发者可以使用任何发送请求的库向your_sts_server发送请求。
          // your_sts_server需要填写步骤1中您搭建的STS Server的IP地址或域名。
          OSS.urllib.request(
            "your_sts_server",
            { method: "GET" },
            (err, response) => {
              if (err) {
                return alert(err);
              }
              try {
                result = JSON.parse(response);
              } catch (e) {
                errmsg = "parse sts response info error: " + e.message;
                return alert(errmsg);
              }
              console.log(result);
            }
          );
        
      
    
                                

上传文件

使用multipartUpload接口上传文件。



  
    
    Document
  

  
    
    
    
    
    
      const client = new OSS({
        // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
        region: "yourRegion",
        // 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。
        accessKeyId: "yourAccessKeyId",
        accessKeySecret: "yourAccessKeySecret",
        // 从STS服务获取的安全令牌(SecurityToken)。
        stsToken: "yourSecurityToken",
        // 填写Bucket名称,例如examplebucket。
        bucket: "examplebucket",
      });

      const headers = {
        // 指定该Object被下载时的网页缓存行为。
        "Cache-Control": "no-cache",
        // 指定该Object被下载时的名称。
        "Content-Disposition": "example.txt",
        // 指定该Object被下载时的内容编码格式。
        "Content-Encoding": "utf-8",
        // 指定过期时间,单位为毫秒。
        Expires: "1000",
        // 指定Object的存储类型。
        "x-oss-storage-class": "Standard",
        // 指定Object标签,可同时设置多个标签。
        "x-oss-tagging": "Tag1=1&Tag2=2",
        // 指定初始化分片上传时是否覆盖同名Object。此处设置为true,表示禁止覆盖同名Object。
        "x-oss-forbid-overwrite": "true",
      };

      // 指定上传到examplebucket的Object名称,例如exampleobject.txt。
      const name = "exampleobject.txt";
      // 获取DOM。
      const submit = document.getElementById("submit");
      const options = {
        // 获取分片上传进度、断点和返回值。
        progress: (p, cpt, res) => {
          console.log(p);
        },
        // 设置并发上传的分片数量。
        parallel: 4,
        // 设置分片大小。默认值为1 MB,最小值为100 KB。
        partSize: 1024 * 1024,
        // headers,
        // 自定义元数据,通过HeadObject接口可以获取Object的元数据。
        meta: { year: 2020, people: "test" },
        mime: "text/plain",
      };

      // 监听按钮。
      submit.addEventListener("click", async () => {
        try {
          const data = document.getElementById("file").files[0];
          // 分片上传。
          const res = await client.multipartUpload(name, data, {
            ...options,
            // 设置上传回调。
            // 如果不涉及回调服务器,请删除callback相关设置。
            callback: {
              // 设置回调请求的服务器地址。
              url: "http://examplebucket.aliyuncs.com:23450",
              // 设置回调请求消息头中Host的值,即您的服务器配置Host的值。
              host: "yourHost",
              /* eslint no-template-curly-in-string: [0] */
              // 设置发起回调时请求body的值。
              body: "bucket=${bucket}&object=${object}&var1=${x:var1}",
              // 设置发起回调请求的Content-Type。
              contentType: "application/x-www-form-urlencoded",
              customValue: {
                // 设置发起回调请求的自定义参数。
                var1: "value1",
                var2: "value2",
              },
            },
          });
          console.log(res);
        } catch (err) {
          console.log(err);
        }
      });
    
  

下载文件

采用签名URL的方式生成文件的下载链接,您只需要单击链接即可下载文件。



  
    
    Document
  

  
    
    
    
      const client = new OSS({
        // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
        region: "yourRegion",
        // 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。
        accessKeyId: "yourAccessKeyId",
        accessKeySecret: "yourAccessKeySecret",
        // 从STS服务获取的安全令牌(SecurityToken)。
        stsToken: "yoursecurityToken",
        // 填写Bucket名称。
        bucket: "examplebucket",
      });

      // 配置响应头实现通过URL访问时自动下载文件,并设置下载后的文件名。
      const filename = "examplefile.txt";
      const response = {
        "content-disposition": `attachment; filename=${encodeURIComponent(
          filename
        )}`,
      };
      // 填写Object完整路径。Object完整路径中不能包含Bucket名称。
      const url = client.signatureUrl("exampleobject.txt", { response });
      console.log(url);
    
  

列举文件

以下代码用于列举文件。



  
    
    
    Document
    
  
  
          
      const client = new OSS({
        // yourRegion填写Bucket所在地域。以华东1(杭州)为例,yourRegion填写为oss-cn-hangzhou。
        region: "yourRegion",
        // 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。
        accessKeyId: 'yourAccessKeyId',
        accessKeySecret: 'yourAccessKeySecret',
        // 从STS服务获取的安全令牌(SecurityToken)。
        stsToken: 'yourSecurityToken',
        // 填写Bucket名称,例如examplebucket。
        bucket: "examplebucket",
      });

      async function list(dir) {
        try {
          // 默认最多返回1000个文件。
          let result = await client.list();
          console.log(result);

          // 从上一次list操作读取的最后一个文件的下一个文件开始继续获取文件列表。
          if (result.isTruncated) {
            let result = await client.list({ marker: result.nextMarker });
          }

          // 列出前缀为'ex'的文件。
          result = await client.list({
            prefix: "ex",
          });
          console.log(result);

          // 列出前缀为'ex'且文件名称字母序'example'之后的文件。
          result = await client.list({
            prefix: "ex",
            marker: "example",
          });
          console.log(result);
        } catch (e) {
          console.log(e);
        }
      }

      list();
    
  

          

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

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

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

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

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

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

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

相关推荐

  • 阿里云对象存储OSS分布式部署-云淘科技

    本文介绍如何分布式部署ossimport,分布式部署目前只支持Linux系统,Windows系统暂不支持。 前提条件 请选择至少两台机器作为迁移集群,其中一台作为Master,其余的作为Worker。 请确保网络连接正常,以便Master与Worker之间通过SSH连接。 请确保所有Worker的用户名和密码一致。 说明 Master与Worker之间需要S…

    阿里云对象存储 2023年12月10日
  • 阿里云对象存储OSSAndroid获取文件元信息-云淘科技

    通过HeadObject方法可以只获取文件元信息而不获取文件的实体。 示例代码 以下代码用于获取文件元信息。 // 创建同步获取文件元信息请求。 // 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。 HeadOb…

    阿里云对象存储 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云日志服务SLS使用分隔符模式采集日志-云淘科技

    日志服务提供Logtail分隔符模式快速采集日志。采集到日志后,您可以进行多维度分析、加工、投递等操作。本文介绍如何通过日志服务控制台创建分隔符模式的Logtail配置采集日志。 前提条件 已创建Project和Logstore。更多信息,请参见创建Project和创建Logstore。 用于安装Logtail的服务器具备访问远端服务器80端口和443端口的…

    2023年12月10日
  • 阿里云ECS云服务器ModifyDedicatedHostAutoRenewAttribute-云淘科技

    调用ModifyDedicatedHostAutoRenewAttribute为一台或多台包年包月专有宿主机设置自动续费,也可以取消已设定的自动续费。 接口说明 当您的包年包月专有宿主机开启自动续费功能后,到期前九天将自动续费,扣费在08:00:00(UTC +8)时间点自动执行。如果前一日扣费失败,次日继续定时执行。扣费成功或者九天之后专有宿主机到期被锁定…

    阿里云服务器 2023年12月9日
  • 阿里云日志服务SLS配置控制台内嵌参数-云淘科技

    通过设置日志服务控制台内嵌参数,可调整内嵌页面的显示效果。 日志服务提供免登方式嵌入自建的Web页面,支持您快速方便地对日志进行查询和分析。在此基础上,还提供了一系列UI参数与第三方自建Web页面进行融合展示。通过免登方式嵌入自建Web页面的具体操作,请参见控制台内嵌及分享。 注意事项 日志服务控制台是以iframe方式被内嵌到其他Web页面。默认情况下,打…

    阿里云日志服务SLS 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

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