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- ...
随机推荐
- Linux杂谈: 树形显示多级目录--tree
最近写博客的时候偶尔会需要将文件目录结构直观地列出来,例如python的包结构. 于是在网上搜了搜,发现了一个Linux下还不错的工具--tree tree 可以很直观地显示多级目录结构. 1. 安装 ...
- Markdown 入门
一. Markdown语法的简要规则 标题 标题是非常重要的一个标记,一段文字标记为标题,只需要在文字前加 #.具体可以支持到1到6个# 1 2 3 4 # 一级标题 ## 二级标题 ### 三级标题 ...
- Android零基础入门第18节:EditText的属性和使用方法
原文:Android零基础入门第18节:EditText的属性和使用方法 EditText与TextView非常相似,它甚至与TextView 共用了绝大部分XML属性和方法.EditText与Tex ...
- layer 1.9.2 发布,国产 Web 弹层不懈的前行者
快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中. <HTML开发Mac OS App 视频教程> 土豆网同步更新:http: ...
- mysql数据库同步系统otter部署实践(中国与欧洲同步)
otter的介绍就不说了, 自己去看官网https://github.com/alibaba/otter/wiki 本系统中, 中国的服务器部署在阿里云上, 欧洲服务器部署在亚马逊上, 由于阿里云的网 ...
- 获取函数的地址(三种方法,分别是@,Addr,MethodAddress)
问题来源: http://www.cnblogs.com/del/archive/2008/07/30/1039045.html#1272783 在编译器看来, 重载函数根本就是完全不同的几个函数, ...
- 海康威视频监控设备Web查看系统(一):概要篇
声明:本系列文章只提供交流与学习使用.文章中所有涉及到海康威视设备的SDK均可在海康威视官方网站下载得到.文章中所有除官方SDK意外的代码均可随意使用,任何涉及到海康威视公司利益的非正常使用由使用者自 ...
- 学习Java,值得你留意的问题(1)更名为《学习Java,容易被你忽略的小细节(1)》
记得大二快要结束的时候,有个女孩子突然问我“你会Java吗,帮我做大作业好吗?” 实话说,那个女孩真的很漂亮,我当时也非常想帮她.但是我从来没有接触过Java,让我在短短的几天内完成Java程序设计课 ...
- 条款17:以独立语句将newed对象置入智能指针
请牢记: 以独立语句将newed对象存储于(置入)智能指针内.如果不这样做,一旦异常被跑出来,有可能导致难以察觉的资源泄露. 假设有个函数用来处理程序的优先权,另一个函数用来在某动态分配所得的Widg ...
- java基础(1)-几种获取类的扩展方式
摘要 在日常开发过程中经常需要获取类的扩展集.即获取类的子类集(抽象类),或者接口实现类.比如说状态模式中,状态构建类,策略模式中的,策略构造方式.本文介绍几种获取方式. 实现 以策略模式为例 定义了 ...