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

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

码农世界 2024-05-16 前端 63 次浏览 0个评论

在使用阿里云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 (
    <>
      styles.file} />
      resourcesName}
        onChange={(e) => setResourcesName(e.target.value)}
        placeholder="请输入文件名"
      />
      
    
  )
};
export default Oss;

下边的代码部分是分片上传内容,通常在上传内容较大的时候会使用分片上传,代码部分如下:




    
    Document


    
    
    
    
    


转载请注明来自码农世界,本文标题:《如何使用阿里云OSS进行前端直传以及分片上传》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,63人围观)参与讨论

还没有评论,来说两句吧...

Top