分享一个react 图片上传组件 支持OSS 七牛云
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 七牛云相关推荐
- antd的联级选择器异步调用编辑回显_react-uplod-img 是一个基于 React antd组件的图片上传组件...
react-uplod-img 是一个基于 React antd组件的图片上传组件 支持oss qiniu等服务端自定义获取签名,批量上传, 预览, 删除, 图片精确的尺寸限制 排序等功能 需要 re ...
- antd vue3 图片上传组件扩展,支持多图上传 图片拖拽排序等
组件涉及到 vue3.2.vite.Ant Design Vue 3.2.16.Windi CSS样式库.vuedraggable-es拖拽库等 组件功能 图片拖拽 多图上传 自定义图片加载样式 自定 ...
- html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器
原文:html5 图片上传,支持图片预览.压缩.及进度显示,兼容IE6+及标准浏览器 以前写过上传组件,见 打造 html5 文件上传组件,实现进度显示及拖拽上传,兼容IE6+及其它标准浏览器,对付一 ...
- 如何上传图片到fileupload空间_如何用原生js写图片上传组件v2.0(还有新版本)?...
js图片上传组件: 基本要求: 1.上传的图片可预览,可删除,可被覆盖更新 2.要求图片格式为jpg和png,大小不能超过2M 新加需求: 1.模拟回显,可用本地存储(实际上的回显是通过后台传过来的u ...
- h5 php 拍照上传图片,H5拍照、选择图片上传组件核心
背景 前段时间项目重构,改成SSR的项目,但之前用的图片选择上传组件不支持SSR(server-side-render).遂进行了调研,发现很多的工具.但有的太大,有的使用麻烦,有的不满足使用需求.决 ...
- H5拍照、选择图片上传组件核心
背景 前段时间项目重构,改成SSR的项目,但之前用的图片选择上传组件不支持SSR(server-side-render).遂进行了调研,发现很多的工具.但有的太大,有的使用麻烦,有的不满足使用需求.决 ...
- 【微信小程序】图片上传组件“mp-uploader“(weui)
使用示例 wxml <mp-uploader files="{{files}}" max-count="{{maximgs}}" max-size=& ...
- 微信公众号开发《四》使用微信JS-SDK实现手机图片上传,支持压缩、预览。并下载图片到自身服务器
在这粘贴上三篇博文链接,方便大家查阅互相学习: 微信公众号开发<一>OAuth2.0网页授权认证获取用户的详细信息,实现自动登陆 微信公众号开发<二>发送模板消息实现消息业务实 ...
- 使用FileReader制作一个简短图片上传
使用FileReader制作一个简短图片上传 效果示例图 代码示例图 效果示例图 代码示例图 <!DOCTYPE html> <html><head><met ...
最新文章
- 36 岁开发者应聘被拒,这 3 位 50 岁程序员的生存秘籍送给你!
- Hyper-V 网卡 load failed
- Mac 技术篇-查看python安装位置,查看java安装位置
- 如何下载百度文库的资料?
- 形变立体跟踪-基于稠密运动估计和力学仿真(1)
- 针对不同浏览器的css
- Struts2的CRUD
- Oracle自定义类型
- 配置linux登录超时命令,LINUX中 设置登录超时
- 【spark】spark学习-27-Spark性能调优(2)
- java数组验证哥德巴赫猜想_验证哥德巴赫猜想的JAVA代码
- 重写ArrayAdapter
- postgreSQL安装成功后打开pgadmin4出现错误:Fatal error:The pgAdmin 4 server could not be contacted:
- 关于MySql使用索引的分析
- 二级域名三级域名设置方法
- 【中秋征文】手把手教你海面月亮升起中秋节特效制作
- 金字塔pyramid
- DEEPIN系统下安装wine
- EXCEL电子表格简单字典功能
- 解决ubuntu18.04源更新问题
热门文章
- 一个学习式的mogoLink框架介绍
- 外边距+内边距+边框详解
- git merge工具 meld
- 学习C++在windows下窗口应用程序开发(一)
- 【解读】主板·主板型号·命名规则√
- FreeRtos(1)-----任务创建与管理
- 平板电脑:apple、中国挑大梁
- DOM算法系列002-寻找指定DOM节点的上一个或下一个节点
- matlab 径向偏振光,一种产生椭圆形径向偏振光束的涡旋半波片及系统的制作方法...
- 2022车险购买:新手上路必看