用react框架,实现前端直接上传文件到minio

1. 首先配置minio的信息

// 上传文件需要的配置
const Minio = require('minio');

// minio配置信息
export const minioClient = new Minio.Client({
    endPoint: '10.874.69.12',   //url
    port: 9000,                //端口
    useSSL: false,              //  协议 false表示http
    accessKey: 'minio',          //账户
    secretKey: 'minio'      //密码
});

2. 调用minioClient.putObject上传图片

export default class Upload extends Component {

  render() {
    const props = {
      customRequest: (info) => {
        const { file } = info;
        const reader = new FileReader();
        reader.readAsArrayBuffer(file);
        reader.onload = () => {
          const arrayBuffer = reader.result;
          // 将数据转化为minio支持的格式
          const stream = Buffer.from(arrayBuffer);
    
          // 获取文件类型及大小
          const fileName = info.file.name
          const mineType = info.file.type
          const fileSize = info.file.size
          // 参数
          const metadata = {
              "content-type": mineType,
              "content-length": fileSize
          }
    
          // 上传
          minioClient.putObject('buketname', fileName, stream, fileSize, metadata, err => {
            if (!err) {
              info.onSuccess();  // 设置图片上传状态,表示图片上传成功
            }
          })
        };
      },
      onChange: (info) => {
        if (info.file.status === 'done') {
          message.success(`${info.file.name} 文件上传成功`);
        } else if (info.file.status === 'error') {
          message.error(`${info.file.name} 文件上传失败`);
        }
      },
      name: 'file',
      headers: {
        authorization: 'authorization-text',
      },
    };

    return (
      <div>
        <Upload {...props}>
          <Button>上传文件</Button>
        </Upload>
      </div>
    );
  }
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在React中上文件到OSS,你需要使用OSS SDK来实现。以下是一个简单的步骤: 1. 安装OSS SDK 你可以使用npm或yarn来安装阿里云OSS SDK。在终端中输入以下命令: ``` npm install ali-oss --save ``` 2. 导入OSS SDK 在你的React组件中导入OSS SDK: ``` import OSS from 'ali-oss'; ``` 3. 创建OSS客户端 在使用OSS SDK之前,你需要创建一个OSS客户端。你需要提供你的Access Key ID、Access Key Secret和Endpoint等信息。 ``` const client = new OSS({ accessKeyId: 'your_access_key_id', accessKeySecret: 'your_access_key_secret', endpoint: 'your_endpoint', bucket: 'your_bucket_name' }); ``` 4. 上文件 现在你可以使用OSS SDK来上文件。以下是一个简单的示例: ``` const uploadFile = async (file) => { try { // 生成唯一的文件名 const fileName = Date.now() + '-' + file.name; // 上文件 const result = await client.put(fileName, file); // 获取文件的URL const fileURL = result.url; // 返回文件的URL return fileURL; } catch (error) { console.log(error); throw error; } } ``` 在这个示例中,我们首先生成一个唯一的文件名,然后使用`client.put`方法来上文件。上成功后,我们获取文件的URL并返回它。 5. 调用上方法 最后,在你的React组件中调用上方法: ``` <input type="file" onChange={async (event) => { const file = event.target.files[0]; const fileURL = await uploadFile(file); console.log(fileURL); }} /> ``` 在这个示例中,我们在一个`<input>`元素的`onChange`事件中调用上方法。当用户选择一个文件后,我们将文件递给`uploadFile`方法,并在上完成后打印文件的URL。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值