如何使用阿里云OSS进行前端直传以及分片上传

这篇具有很好参考价值的文章主要介绍了如何使用阿里云OSS进行前端直传以及分片上传。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在使用阿里云OSS进行前端直传时,首先我们需要去阿里云官网注册自己的存储桶,然后申请相关的accessKeyId和accessKeySecret,然后新建一个桶,为这个桶命名以及选择对应的地区。
然后可以根据自己的业务,封装对应的组件,以下是根据我自己的项目,所封装的上传组件,所用的是React技术栈

import OSS from "ali-oss";
import { plus } from '../apis/person/index'
import styles from './oss.module.less'
import { Input } from "antd";
import { useState } from "react";

const Oss = () => {
  const [resourcesName, setResourcesName] = useState('')
  const upload = () => {
    const client = new OSS({
      region: "", // 填写桶的地区
      accessKeyId: "", // 桶的key
      accessKeySecret: "", // 桶的secret
      bucket: "dd-robot-react", // 桶的名称
    });

    const upload = document.getElementById("upload");

    async function putObject(data: any) {
      try {
        const options = {
          meta: { temp: "demo" },
          mime: "json",
          headers: {
            "Content-Type": file.type
          },
        };

        const result = await client.put(data.name, data, options)
        console.log(result);
        console.log(result.url);
        const ossDomain = "dd-robot-react.oss-cn-beijing.aliyuncs.com"; // 替换为你的实际OSS域名
        const fileUrl = `https://${ossDomain}/${data.name}`;
        console.log(fileUrl);

        let res = await plus({
          data_link: result.url,
          data_name: resourcesName,
          type: 3
        })
        console.log(res);
      } catch (e) {
        console.log(e);
      }
    }

    upload.addEventListener("click", () => {
      const data = file.files[0];
      console.log(data.name);
      putObject(data);
    });
  }

  return (
    <>
      <input id="file" type="file" className={styles.file} />
      <Input
        value={resourcesName}
        onChange={(e) => setResourcesName(e.target.value)}
        placeholder="请输入文件名"
      />
      <button id="upload" onClick={upload} className={styles.btn} style={{ marginTop: 10 }}>上传资源</button>
    </>
  )
};

export default Oss;

下边的代码部分是分片上传内容,通常在上传内容较大的时候会使用分片上传,代码部分如下:文章来源地址https://www.toymoban.com/news/detail-834251.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <title>Document</title>
</head>

<body>
    <button id="submit">上传</button>
    <input id="file" type="file" />
    <!--导入sdk文件-->
    <script type="text/javascript" src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"></script>
    <script type="text/javascript">
        const client = new OSS({
            // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
            region: "oss-cn-beijing",
            // 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。
            accessKeyId: "",
            accessKeySecret: "",
            // 填写Bucket名称,例如examplebucket。
            bucket: "",
        });

        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 * 100,
            // headers,
            // 自定义元数据,通过HeadObject接口可以获取Object的元数据。
            meta: { year: 2020, people: "test" },
            mime: "text/plain",
        };

        // 监听按钮。
        submit.addEventListener("click", async () => {
            try {
                const data = document.getElementById("file").files[0];
                const fileName = data.name;
                // 分片上传。
                const res = await client.multipartUpload(fileName, 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);
            }
        });
    </script>
</body>

</html>

到了这里,关于如何使用阿里云OSS进行前端直传以及分片上传的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 阿里云 OSS 客户端直传 Policy 模式使用

    阿里云 OSS 客户端直传 Policy 模式使用

    Post policy 是阿里推出的一种安全的文件上传方式,在传统的方式一般都是客户端将文件上传至服务端,再由服务端将文件上传至具体的文件系统比如阿里云的OSS,这种方式不仅增加了我们服务器的带宽,而且效率也不怎么高,为此阿里提出的policy 模式,是由服务端进行签名,

    2023年04月08日
    浏览(11)
  • uniapp - [小程序 / H5网页] “纯前端“ 将文件上传到阿里云 OSS,全端通用的阿里云 OSS 直传音视频、图片、word、excel、ppt、office 文档(全程无需后端稳定可靠)

    uniapp - [小程序 / H5网页] “纯前端“ 将文件上传到阿里云 OSS,全端通用的阿里云 OSS 直传音视频、图片、word、excel、ppt、office 文档(全程无需后端稳定可靠)

    网上的教程乱七八糟各种坑,而且 uniapp 各个端都是不同的教程,对于新手来说真的无从下手。 本文站在新手小白的角度, 实现 uniapp 小程序 / H5 网页等平台的开发中,“前端直传” 上传文件到阿里云oss对象存储的详细教程,通用的 “OSS 上传器”,几乎全平台都可以使用!

    2024年02月12日
    浏览(59)
  • 使用Go-Gin框架实现 OSS 前端直传功能

    在现代 Web 应用中,文件上传是一项常见功能。传统的上传方式通常需要文件经过后端服务器转发到对象存储服务(如阿里云 OSS)。然而,这种方法可能对服务器造成额外的负担,并降低上传效率。本文将探讨如何使用 Go-Gin 框架实现 OSS 前端直传,从而提高效率并减轻服务器

    2024年01月18日
    浏览(14)
  • node.js 前端直接分片上传文件与阿里云OSS的方法

    解决问题:直接由用户上传文件至阿里云OSS,而非经过中间件/后端 官方文档:分片上传 (aliyun.com)​​​​​​​​​​​ 在官方文档中,提供的方法是由中间件上传至oss,调用了path库,但是在浏览器用户没有那么大的权限,我们关注到文档中此表: 类型 参数 说明 必选参

    2024年02月11日
    浏览(15)
  • 阿里云OSS-小程序文件直传(支持微信小程序、H5、PC端web使用)

    阿里云OSS-小程序文件直传(支持微信小程序、H5、PC端web使用)

    支持微信小程序、H5、PC端web使用,整套文件进行封装统一使用 开发背景:做类似发布朋友圈的功能需求,由于后端对发布功能只提供一个接口,文字、状态、文件上传统一一个接口上传,且对文件上传方面做的接口存在诸多问题(人已经整麻了),包括各种数据结构的转换

    2024年02月07日
    浏览(44)
  • 已解决:前端直传阿里oss报错跨域问题,“No ‘Access-Control-Allow-Origin‘”,这个错误基本就是在阿里的开放平台没做规则配置(附我封装的上传源码)

    已解决:前端直传阿里oss报错跨域问题,“No ‘Access-Control-Allow-Origin‘”,这个错误基本就是在阿里的开放平台没做规则配置(附我封装的上传源码)

    就直接上阿里oss管理后台去增加一个跨域规则:见图片,特详细  配置成这样点确定就好了,就这么简单 标题其实就已经是答案了,但是以我的性格,我还是要介绍介绍案发背景,如果你比较着急,可以直接跳到解决方案那里看: 本来我就是个干前端的,也干安卓端(为啥

    2024年02月11日
    浏览(10)
  • vue+iviewUi+oss直传阿里云上传文件

    vue+iviewUi+oss直传阿里云上传文件

    用户获取oss配置信息将文件上传到阿里云,保证了安全性和减轻服务器负担。一般文件资源很多直接上传到服务器会加重服务器负担此时可以选择上传到oss,轻量型的应用可以直接将文件资源上传到服务器就行。废话不多说,下面开始总结本人上传到oss的踩坑之旅。 1、第一

    2024年02月13日
    浏览(12)
  • 微信小程序录音直传阿里云OSS并语音识别

    如题:做一个录音文字识别功能,知识点有三个,分别是微信小程序的录音功能、录音文件直传阿里云OSS、使用阿里云的录音文件识别接口返回识别后的文字 官方文档:微信小程序全局唯一的录音管理器 RecorderManager wxml: js:需要注意的是,点击开始录音时要判断当前是否获

    2024年02月10日
    浏览(13)
  • SpringBoot+Vue实现阿里云OSS服务器签名直传并且返回回调数据

    SpringBoot+Vue实现阿里云OSS服务器签名直传并且返回回调数据

    vue java 可参考官方文档:如何通过Java在服务端签名直传并设置上传回调_对象存储-阿里云帮助中心  

    2024年02月13日
    浏览(16)
  • 阿里云oss分片上传示例

    阿里云oss分片上传示例

    oss文件服务器分片上传官方文档参考 : 分片上传 - 对象存储 OSS - 阿里云 官方文档写的更加详细,更多内容请参考官方文档 1.初始化分片事件,向oss服务器获取全局唯一的uploadId 获取uploadId,后续分片都需带上uploadId,标识同一个文件对象。 另外初始化操作时已经指定文件访问链

    2024年02月16日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包