react WangEditor 编辑器阿里云OSS上传图片

wangEditor 编辑器使用阿里云OSS上传图片

刚开始写的时候,去网上翻阅了很多文章,发现根本没有我想要的,有时候还有需要自己去阅读官方的文章来解决问题。

学习上有一点很重要,我们需要的是怎么去官方阅读文档找到解决方案,而不是单纯的去网上搜索别人的代码。

第一步阅读wangEditor的文档
找到文档的这个描述,第一次找的时候,没有看到靠。
在这里插入图片描述

从上面的这个文档里面我们找到了一个重要的API函数,我们可以拿到两个参数,

  • file 这个参数是图片信息的参数
  • insertFn 插入图片的函数
editorConfig.MENU_CONF['uploadImage'] = {
    // 自定义上传
    async customUpload(file: File, insertFn: InsertFnType) {  // TS 语法
    // async customUpload(file, insertFn) {                   // JS 语法
        // file 即选中的文件
        // 自己实现上传,并得到图片 url alt href
        // 最后插入图片
        insertFn(url, alt, href)
    }
}

我们接下来看阿里云OSS文档
下图的标记是关键
在这里插入图片描述

我们要
npm install ali-oss

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

这个data对象可以自定义为file对象 ,就是我们之前 file 这个参数是图片信息的参数

       // data对象可以自定义为file对象、Blob数据或者OSS Buffer。
          const result = await client.put(
            "exampledir/exampleobject.txt",
            data
            //{headers}
          );
          console.log(result);
        } catch (e) {
          console.log(e);
        }

完整代码如下

alioss.ts 目录
const OSS = require('ali-oss');
/* OSS配置项 */
const client = new OSS({
    region: 'xxxx',
    accessKeyId: 'xxxx',
    accessKeySecret: 'xxxx',
    bucket: 'xxxx'
});

/**
 * 生成唯一文件名
 * @param file     文件对象
 * @param callback 回调
 * @param dirname  指定文件夹
 * @returns 阿里云返回参
 */
export function on_click_upload_img(file: any, callback: any, dirname = "") {
    let val = file.name;
    let suffix = val.substr(val.lastIndexOf("."));
    let storeAs = dirname + "/" + (file.customName ? file.customName.replace(',', ",") : '') + getFileName() + suffix;
    console.log(444, storeAs, file);

    client.put(storeAs, file).then(function (r1: any) {
        callback(r1.name);
    }).catch(function (err: any) {
        callback(0);
    });
}

import { on_click_upload_img } from '../Aliyun/alioss'
    // 上传视频
    editorConfig.MENU_CONF['uploadVideo'] = {
        // 自定义上传
        async customUpload(resultFiles: File, insertFn: InsertFnType) {  // TS 语法
            // async customUpload(file, insertFn) {                   // JS 语法
            // file 即选中的文件
            // 自己实现上传,并得到视频 url poster
            // 最后插入视频
            on_click_upload_img(resultFiles, (fileName: string | number) => {
                if (fileName === 0) {
                    message.error('上传失败')
                } else {
                    message.success('上传成功')
                    insertFn(`https://xxxxxx/${fileName}`)
                }
            }, '/bbb')
            // insertFn(url, poster)
        }
    }
React中使用阿里云OSS下载文件,你可以按照以下步骤进行操作: 1. 首先,安装ali-oss库,可以使用npm或者yarn进行安装: ``` npm install ali-oss ``` 2. 在你的React组件中引入ali-oss库: ```jsx import OSS from 'ali-oss'; ``` 3. 创建一个OSS客户端实例,并配置好Access Key和Bucket信息: ```jsx const client = new OSS({ accessKeyId: 'your_access_key_id', accessKeySecret: 'your_access_key_secret', bucket: 'your_bucket_name', region: 'your_bucket_region' }); ``` 确保替换上述代码中的"your_access_key_id","your_access_key_secret","your_bucket_name"和"your_bucket_region"为你自己的实际值。 4. 编写一个下载文件的函数,并调用OSS客户端的get方法来下载文件: ```jsx const downloadFile = async (filename) => { try { const result = await client.get(filename); // 使用result.res.data来获取文件的内容或者进行其他操作 // 例如,你可以创建一个下载链接并触发下载 const downloadLink = URL.createObjectURL(result.res.data); const link = document.createElement('a'); link.href = downloadLink; link.download = filename; link.click(); } catch (error) { console.log('下载文件失败:', error); } }; ``` 在上述代码中,替换"filename"为你要下载的文件名。 5. 最后,在React组件中调用下载文件函数: ```jsx downloadFile('your_filename'); ``` 确保将"your_filename"替换为你实际要下载的文件名。 这样,当你调用downloadFile函数时,它将使用阿里云OSS客户端下载指定文件,并通过创建一个下载链接来触发文件的下载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值