react-uplod-img 是一个基于 React antd组件的图片上传组件 支持oss qiniu等服务端自定义获取签名,批量上传, 预览, 删除, 排序等功能

需要 react 版本大于 v16.1.0 支持async await

git地址

demo

安装

npm i react-uplod-img --save

引入

import UpImage from 'react-uplod-img'

调用

const getOSSSign = (suffix,width,height, extraParam) => {const apiServerUrl = 'https://hp.bncry.cn/util/getAliyunSignature';const url = `${apiServerUrl}?${[`bizName=${extraParam.bizName}`,`suffix=${suffix}`,`width=${width}`,`height=${height}`,].join('&')}`;return new Promise((resolve,reject)=>{fetch(url).then(async (response)=>{const res = await response.json();const formData = res.data;resolve({key: formData.dirPath,policy: formData.policy,OSSAccessKeyId: formData.OSSAccessKeyId,success_action_status: '200',callback: formData.callback,signature: formData.signature,});})})
};const ossUploadConfig = {type:'oss',imageUploadServerHost: 'https://hp-file-lf.oss-cn-hangzhou.aliyuncs.com', //图片上传服务地址imageShowServiceHost: 'https://hp-file-lf.oss-cn-hangzhou.aliyuncs.com', // 图片查看地址前缀totalNum: 5,supportSort: true,value:'avatar/2018-10-10/f2b3ace0-cc33-11e8-8ad4-3550e70cc242_220_138.jpg;avatar/2018-10-10/f2b42210-cc33-11e8-8ad4-3550e70cc242_1080_1920.jpg;avatar/2018-10-10/f2b44920-cc33-11e8-8ad4-3550e70cc242_1280_719.jpg'};<UpImage getSign={getOSSSign}  {...ossUploadConfig} extraParam={{bizName:"avatar"}}/>
配置项 类型 默认值 描述
type String oss 类型 目前支持 oss qiniu
imageUploadServerHost String 图片上传服务地址前缀
imageShowServiceHost String 图片查看服务地址前缀
maxSize Number 2048 图片大小限制 单位KB
totalNum Number 1 图片数量限制
supportSort Bool false 是否支持拖拽排序
extraParam Object 获取签名getSign方法 的第四个参数 供获取签名时 自定义入参
getSign Func (suffix,width,height, extraPara)=>{} 获取签名的方法 Promise
onChange Func (values)=>{} 图片上传成功时的回调 参数为图片的半路径;分隔的一个字符串
value String 回显图片的路径 半路径 ;分隔

getSign

suffix 图片后缀 width 图片宽度 height 图片高度 extraParam 自定义的参数

width 和 height 参数是组件通过渲染获取的图片真实宽高,
推荐传递到服务器端参与签名 生成的URL key中能携带宽高信息 如
/avatar/2018-10-10/f2b3ace0-cc33-11e8-8ad4-3550e70cc242_800_600.jpg 图片路径中携带了宽高信息 后期前端页面图片懒加载时 可以通过链接中的宽高信息做优化

    // ossconst getSign = (suffix,width,height, extraParam) => {const apiServerUrl = 'https://hp.bncry.cn/util/getAliyunSignature';const url = `${apiServerUrl}?${[`bizName=${extraParam.bizName}`,`suffix=${suffix}`,`width=${width}`,`height=${height}`,].join('&')}`;return new Promise((resolve,reject)=>{fetch(url).then(async (response)=>{const res = await response.json();const formData = res.data;resolve({key: formData.dirPath,policy: formData.policy,OSSAccessKeyId: formData.OSSAccessKeyId,success_action_status: '200',callback: formData.callback,signature: formData.signature,});})})};// qiniuconst getSign = (suffix,width,height, extraParam) => {const qiniuApiServerUrl = 'https://hp.bncry.cn/util/getQiniuSignature';const url = `${qiniuApiServerUrl}?${[`suffix=${suffix}`,`width=${width}`,`height=${height}`,].join('&')}`;return new Promise((resolve,reject)=>{fetch(url).then(async (response)=>{const formData = await response.json();resolve({token: formData.uptoken,});})})};

注意事项

获取签名采用的是async await的异步处理方式 需要你的项目支持async await 如果不支持 会报 ReferenceError: regeneratorRuntime is not defined

解决方案

npm i --save-dev babel-plugin-transform-runtime
在 .babelrc 文件中添加:
"plugins": [["transform-runtime",{"helpers": false,"polyfill": false,"regenerator": true,"moduleName": "babel-runtime"}]]

分享一个react 图片上传组件 支持OSS 七牛云相关推荐

  1. antd的联级选择器异步调用编辑回显_react-uplod-img 是一个基于 React antd组件的图片上传组件...

    react-uplod-img 是一个基于 React antd组件的图片上传组件 支持oss qiniu等服务端自定义获取签名,批量上传, 预览, 删除, 图片精确的尺寸限制 排序等功能 需要 re ...

  2. antd vue3 图片上传组件扩展,支持多图上传 图片拖拽排序等

    组件涉及到 vue3.2.vite.Ant Design Vue 3.2.16.Windi CSS样式库.vuedraggable-es拖拽库等 组件功能 图片拖拽 多图上传 自定义图片加载样式 自定 ...

  3. html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器

    原文:html5 图片上传,支持图片预览.压缩.及进度显示,兼容IE6+及标准浏览器 以前写过上传组件,见 打造 html5 文件上传组件,实现进度显示及拖拽上传,兼容IE6+及其它标准浏览器,对付一 ...

  4. 如何上传图片到fileupload空间_如何用原生js写图片上传组件v2.0(还有新版本)?...

    js图片上传组件: 基本要求: 1.上传的图片可预览,可删除,可被覆盖更新 2.要求图片格式为jpg和png,大小不能超过2M 新加需求: 1.模拟回显,可用本地存储(实际上的回显是通过后台传过来的u ...

  5. h5 php 拍照上传图片,H5拍照、选择图片上传组件核心

    背景 前段时间项目重构,改成SSR的项目,但之前用的图片选择上传组件不支持SSR(server-side-render).遂进行了调研,发现很多的工具.但有的太大,有的使用麻烦,有的不满足使用需求.决 ...

  6. H5拍照、选择图片上传组件核心

    背景 前段时间项目重构,改成SSR的项目,但之前用的图片选择上传组件不支持SSR(server-side-render).遂进行了调研,发现很多的工具.但有的太大,有的使用麻烦,有的不满足使用需求.决 ...

  7. 【微信小程序】图片上传组件“mp-uploader“(weui)

    使用示例   wxml <mp-uploader files="{{files}}" max-count="{{maximgs}}" max-size=& ...

  8. 微信公众号开发《四》使用微信JS-SDK实现手机图片上传,支持压缩、预览。并下载图片到自身服务器

    在这粘贴上三篇博文链接,方便大家查阅互相学习: 微信公众号开发<一>OAuth2.0网页授权认证获取用户的详细信息,实现自动登陆 微信公众号开发<二>发送模板消息实现消息业务实 ...

  9. 使用FileReader制作一个简短图片上传

    使用FileReader制作一个简短图片上传 效果示例图 代码示例图 效果示例图 代码示例图 <!DOCTYPE html> <html><head><met ...

最新文章

  1. 36 岁开发者应聘被拒,这 3 位 50 岁程序员的生存秘籍送给你!
  2. Hyper-V 网卡 load failed
  3. Mac 技术篇-查看python安装位置,查看java安装位置
  4. 如何下载百度文库的资料?
  5. 形变立体跟踪-基于稠密运动估计和力学仿真(1)
  6. 针对不同浏览器的css
  7. Struts2的CRUD
  8. Oracle自定义类型
  9. 配置linux登录超时命令,LINUX中 设置登录超时
  10. 【spark】spark学习-27-Spark性能调优(2)
  11. java数组验证哥德巴赫猜想_验证哥德巴赫猜想的JAVA代码
  12. 重写ArrayAdapter
  13. postgreSQL安装成功后打开pgadmin4出现错误:Fatal error:The pgAdmin 4 server could not be contacted:
  14. 关于MySql使用索引的分析
  15. 二级域名三级域名设置方法
  16. 【中秋征文】手把手教你海面月亮升起中秋节特效制作
  17. 金字塔pyramid
  18. DEEPIN系统下安装wine
  19. EXCEL电子表格简单字典功能
  20. 解决ubuntu18.04源更新问题

热门文章

  1. 一个学习式的mogoLink框架介绍
  2. 外边距+内边距+边框详解
  3. git merge工具 meld
  4. 学习C++在windows下窗口应用程序开发(一)
  5. 【解读】主板·主板型号·命名规则√
  6. FreeRtos(1)-----任务创建与管理
  7. 平板电脑:apple、中国挑大梁
  8. DOM算法系列002-寻找指定DOM节点的上一个或下一个节点
  9. matlab 径向偏振光,一种产生椭圆形径向偏振光束的涡旋半波片及系统的制作方法...
  10. 2022车险购买:新手上路必看