AWS S3 上传文件
一、获取签名的URL
通过后端给的接口拿到已经签名好的文件上传的URL地址
二、读取文件(注:AWS 接受的二进制,不能使用form-data)
// 获取文件二进制
getFileMd5 = (key: string,callback: (value: any)=>void) => {
const log: any = document.getElementById(key)
const file = log.files[0] const reader = new FileReader(); reader.onload = () => {
// console.log(reader.result);
callback(reader.result)
}
reader.readAsBinaryString(file)
}
要在onload中去执行后续操作,reader.result返回文件的二进制
三、提供接口所需要的header参数以及文件参数
req.setRequestHeader('Content-MD5',md5Base64);
req.setRequestHeader('x-amz-acl', 'public-read');
md5Base64 是文件的二进制转base64后的值
1、使用spark-md5将文件转为hash的二进制
import SparkMD5 from 'spark-md5' const binaryFile = SparkMD5.hashBinary(fileValue,true)
// fileValue 为上面读取文件的二进制值
2、使用base64将二进制转为base64
import Base64 from 'base-64'
const md5Base64 = Base64.encode(binaryFile)
// binaryFile 为上面的二进制文件
四、拿到所有所需参数发送请求
$.ajax({
url,
type: "PUT",
data: file, // 源文件
beforeSend: (req) => {
req.setRequestHeader('Content-MD5',md5Base64);
req.setRequestHeader('x-amz-acl', 'public-read');
},
processData: false, // 不想转换数据的时候,需要手动将其设置为false
contentType: false, // 不设置content-type
success:(res) => {
console.log('res',res)
const obj: any = {}
// 图片上传成功
switch(key) {
case 'mb_banner':
message.success('banner-mb图片上传成功!')
obj.mobile_banner_url = url.split('?')[0]
break
case 'pc_banner':
message.success('banner-pc图片上传成功!')
obj.banner_url = url.split('?')[0]
break
case 'icon':
message.success('分享icon图片上传成功!')
obj.icon_url = url.split('?')[0]
break
default:
break
}
this.props.setBannerImg(obj) },error: err => {
switch(key) {
case 'mb_banner':
message.error('banner-mb图片上传失败!')
break
case 'pc_banner':
message.error('banner-pc图片上传失败!')
break
case 'icon':
message.error('分享icon图片上传失败!')
break
default:
break
}
console.log(err)
}
});
file: //let inputfile: any = document.getElementById(key)
inputfile = inputfile.files[0]
AWS S3 上传文件的更多相关文章
- Amazon S3 上传文件 SSL23_GET_SERVER_HELLO握手错误
题外话:今天偶尔来逛逛,发现我真是懒到家了.居然有半年前的留言我都没有来看过,真对不起留言的同学,希望他的问题已经解决了. 这两三天一直被亚马逊S3上传文件的问题困扰着,直到昨天晚上终于搞定了,工作群 ...
- AWS S3 递归上传文件和递归下载文件, 以及S3之间拷贝文件夹
1. 递归上传文件: aws s3 cp 本地文件夹 s3://bucket-name -- recursive --region us-east-1 2. 递归下载S3上的文件夹: cd 本地下载 ...
- 上传文件到aws的s3存储
只要有aws-cli客户端就可以上传文件到aws的S3存储.可以在任意机器上.这里以centos为例. 1.安装python.pip. # yum install -y python python-p ...
- Linux系统通过AWS命令行上传文件至S3
打开你的AWS控制台: 在IAM中创建一个新用户(比如test),创建时它会自动创建一个用户安全凭证,是由“访问密钥ID”和“私有访问密钥”组成的,请记住它并下载该凭证,后面会用到它: 选择你刚创建的 ...
- Mac安装aws-cli全过程,通过命令行上传文件到aws s3协议服务器
第一次使用aws,首先查询了各种资料,我第一步需要做的是安装aws-cli,而安装aws-cli之前需要安装python3,当然你安装python3之前你还需要安装homebrew,当然我正在安装的过 ...
- 亚马逊s3存储: aws cli上传工具速度和各文件大小关系探究
1,背景介绍 公司最近最近统一了存储环境,由ftp文件存储全量转换为ceph存储.有业务组表示以前往ftp文件批量上传30万个文件1.3GB只需要16分钟左右.切换为ceph存储需要1个多小时,也就是 ...
- centos6.8 上传文件到amazon s3
centos6.8 上传文件到amazon s3 0.参考 AWS CLI Cinnabd Reference Possible to sync a single file with aws s3 s ...
- aws上传文件、删除文件、图像识别
目录 aws的上传.删除s3文件以及图像识别文字功能 准备工作 安装aws cli 初始化配置AWS CLI s3存储桶开通 图像识别文字功能开通 aws的sdk 上传文件 方法一 方法二 删除文件 ...
- 亚马逊S3下载上传文件
引用网址: http://www.jxtobo.com/27697.html 下载 CloudBerry Explorer http://www.cloudberrylab.com/download- ...
随机推荐
- delphi dom动态创建节点方法
在一次测试demo中 需要动态的创建xml节点并添加,实现方法如下: var NewItem:IXMLDOMElement; NewItem:=ConfigDoc.createElement('ite ...
- win10 uwp 异步转同步
原文:win10 uwp 异步转同步 有很多方法都是异步,那么如何从异步转到同步? 可以使用的方法需要获得是否有返回值,返回值是否需要. 如果需要返回值,使用GetResults 如从文件夹获取文件: ...
- Windows的远程协助和远程桌面的区别
在Windows的“系统属性-远程”里面,包含了“远程协助”和“远程桌面”两个设置. 远程桌面我们平时用得比较多,但是远程协助却一直没明白什么作用.系统装完以后,“远程协助 - 允许远程协助连接这台计 ...
- SetWinEventHook 事件钩子(有些windows事件并没有消息对应,譬如弹出菜单,切换窗口,获得焦点,滚动条滚动等)good
相信消息钩子大家听的比较多,消息钩子能够在应用程序处理系统消息之前将其截获,提前处理并可以决定是否继续将消息往下传送,有些windows事件并没有消息对应,譬如弹出菜单,切换窗口,获得焦点,滚动条滚动 ...
- return Json对象时序列化错误
当要序列化的表与另一个表是一对多的关系是,表1序列化时会找到另一个表2关联的字段,会将另一个表2进行序列化,然后表2中也有一个字段与表1关联,这样序列化就会产生循环序列化. 在网上进行搜索,其中大多数 ...
- Delphi XE6 如何设计并使用FireMonkeyStyle
介绍 FireMonkey使用Style来控制控件的显示方式. 每个控件都有一个StyleLookup属性,FireMonkey就是通过控件的这个属性来在当前窗体的StyleBook控件中查找匹配 ...
- java多线程之Lock/Condition简介
在java多线程中,可以使用synchronized关键字实现线程之间的同步互斥,在jdk1.5中增加的ReentrantLock也能实现同样的效果,并且功能更加强大. 比如具有嗅探锁定,多路分支通知 ...
- python之datetime
一.获取当前日期 >>> from datetime import datetime >>> now=datetime.now() >>> pri ...
- lodop+art-template实现web端漂亮的小票样式打印
一. 现状 由于之前采用Lodop打印控件(商业版付费,可以使用免费版 但是会有水印)去打印小票,是一行一行的打印,但是不满足UI给到复杂布局的小票样式,所以得重新考虑如何来实现. 二. 介绍 art ...
- Netty源码分析--Reactor模型(二)
这一节和我一起开始正式的去研究Netty源码.在研究之前,我想先介绍一下Reactor模型. 我先分享两篇文献,大家可以自行下载学习. 链接:https://pan.baidu.com/s/1Uty ...