react使用阿里云对象存储,ali-oss, antd upload to ali-oss
最近写阿里云图片上传,碰到一些小问题,在此总结一下.
项目环境:
create-react-app
antd
node6.1.0
看了阿里云oss对象存储sdk
直接采用node
的安装方式.
在使用的时候碰到了问题.
yield client.put('file', file.url);
=>
TypeError: fs.createReadStream is not a function
看文档要求,换成分片上传,也会存在问题.
yield client.multipartUpload('file', file.url);
=>
TypeError: fs.stat is not a function
问题就是这样,node
的库不在.
没有办法,尝试浏览器上传. 是可以的.
浏览器安装
在index.html
引入包.
<script src="http://gosspublic.alicdn.com/aliyun-oss-sdk.min.js"></script>
可以看快速开始.浏览器方式快速开始.
其实这里说的主要是antd
库的 Upload
集成ali-oss
上传.
import React from 'react'
import {Upload, Modal} from 'antd'class Example extends React.Component{state = {preview: "",visible: false,imageList: [],token: {}}render() {const props = {onRemove: (file) => {this.setState(({ imageList }) => {const index = imageList.indexOf(file);const newFileList = imageList.slice();newFileList.splice(index, 1);return {imageList: newFileList};});},beforeUpload: this.beforeUpload,fileList: this.state.imageList,onPreview: this.handlePreview,accept: "image/*",listType: "picture-card"};const {preview, visible, imageList} = this.statereturn(<div><Upload {...props}>{imageList.length >= 1 ? null : uploadButton}</Upload><Modal visible={visible} footer={null} onCancel={this.handleCancel}><img alt="example" style={{ width: '100%' }} src={preview} /></Modal></div>)}//因为我们需要与表单一起上传,所以默认是不去上传到后台服务器.beforeUpload = file => {let reader = new FileReader();reader.readAsDataURL(file);reader.onloadend = () => {UploadToOss(this, DRIVER_LICENSE_PATH, file).then(data => {this.setState(({ imageList }) => ({imageList: [{uid: file.uid,name: file.name,status: file.status,type: file.type,result: data.name,url: reader.result}],}));})}return false;}handlePreview = (file) => {this.setState({preview: file.url || file.thumbUrl,visible: true,});}componentDidMount(){//使用的sts,向后台服务器请求获取token.// setState({token: "you get result"})}
}const client = (self) => {const {token} = self.statereturn new window.OSS.Wrapper({accessKeyId: token.access_key_id,accessKeySecret: token.access_key_secret,stsToken: token.security_token,region: OSS_ENDPOINT, //常量,你可以自己定义bucket: OSS_BUCKET,});
}const uploadPath = (path, file) => {return `${path}/${file.name.split(".")[0]}-${file.uid}.${file.type.split("/")[1]}`
}const UploadToOss = (self, path, file) => {const url = uploadPath(path, file)return new Promise((resolve, reject) => {client(self).multipartUpload(url, file).then(data => {resolve(data);}).catch(error => {reject(error)})})
}
上面就是upload
和 ali-oss
一起使用的列子.
- 原文链接
react使用阿里云对象存储,ali-oss, antd upload to ali-oss相关推荐
- 如何结合PICgo,Typora以及阿里云对象存储OSS搭建自己图床写博客
如何利用阿里云对象存储OSS搭建自己图床写博客 1.购买阿里云 购买链接 登录阿里云–>控制台–>对象存储OSS–购买 购买的时候可以选择按月付费一月一元的,也可以年费9元的,40GB作为 ...
- 阿里云对象存储OSS之通过URL形式进行图片处理
什么是OSS 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量.安全.低成本.高可靠的云存储服务.它具有与平台无关的RESTful API接口,能够 ...
- 阿里云对象存储OSS支持版本管理特性
2019独角兽企业重金招聘Python工程师标准>>> 阿里云对象存储OSS现已经全面支持"对象版本管理"特性.该功能适用于所有的存储类型以及区域.当Bucket ...
- 阿里云对象存储OSS与文件存储NAS的区别
一.简介 应用场景:选择一款存储产品,面向文档数据的存取,不会涉及到数据处理. 产品选型主要从OSS和NAS中选择一款,满足文档存储的需求. 二.NAS优缺点 NAS 是一种采用直接与网络介质相连的特 ...
- 开启阿里云对象存储OSS防误删新功能,保护您珍贵的数据。
一.背景 阿里云对象存储 OSS 是保存海量数据的平台,支持丰富的应用.在使用过程中难免会遇到误操作.程序 Bug.覆盖写等导致数据被删除的场景,对于数据的丢失会非常着急,后果也非常严重,甚至某些情况 ...
- 阿里云对象存储OSS存储照片
版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 概述 OSS可用于图片.音视频.日志等海量文件的存储.各种终端设备.Web网站程序.移动应用可 ...
- 关于阿里云对象存储OSS流量包说明
阿里云对象存储OSS公网出方向流量是收费的,内网产生的流量或者公网入方向流量都是免费的,OSS流量计费方式分为按量付费和包年包月流量包两种计费模式,云吞铺子来详细说下阿里云对象存储OSS流量收费标准价 ...
- 阿里云对象存储OSS(Object Storage Service)
文章目录 简介 endpoint:阿里云服务部署的地区位置 见解 开发步骤 配置文件 utils层(读取全局配置文件并赋值给类变量) service层 impl(基于oss驱动sdk实现类) cont ...
- SpringBoot整合——阿里云对象存储(OSS)
SpringBoot整合--阿里云对象存储 1 OSS介绍 在开发应用的过程中,我们经常会有用户需要实名认证之后才能访问的需求. 用户认证需要上传证件图片.首页轮播也需要上传图片,因此我们要做文件服务 ...
最新文章
- 系统安全漏洞成云安全主威胁
- 通过RS232发送和接收短信(二)
- 一个插排引发的设计思想 (一) 观察者模式
- 大连公交客运集团认真安排做好2007年防台防汛准备工作
- c语言判断闰年_大一C语言错题
- java redis 重连机制_redis在java中的客户端连接
- matplotlib 数据可视化
- 20190720学习小结
- Qt之布局管理——分割窗口
- lwip协议栈实现服务器端主动发送,lwip协议栈源码详解说明 - 全文
- Python编程 介绍(入门)
- 换个角度理解Android的AIDL原理
- 打开html文件很卡,网页打开很慢是什么原因【解决办法】
- 百钱百鸡 公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱
- vue2开发过程中el-select懒加载问题
- ROS自主驾驶割草机
- 给研发培训资料两篇(架构设计大数据)
- 微信小程序 java服务器发送通知给用户 全流程 (获取openid 获取formid)
- 采用简化原型法进行软件项目需求分析
- 董付国老师python教学——学习笔记(一)
热门文章
- mtu测试软件 win7,告诉你mtu值怎么设置才能网速最好!
- 微信开发者工具 微信小程序中调试器console界面不显示跑出的代码结果的问题解决
- 【数据结构】C语言-实现(定长顺序存储)串的基本操作(无C++内容)
- QT ComboBox控件左侧添加图标
- Android逆向之旅---Android中的GG大玩家应用破解教程分析
- left和margin-left的区别
- Java模拟玩家洗牌发牌小程序
- java 正则判断小数_java判断是否是小数详解(正则方法)
- 关于在前端js中将时间戳转换为2000-01-01 00:00:00的格式
- win10装mysql哪个版本好用吗_win10安装两个不同版本的mysql(mysql5.7和mysql-8.0.19)