一、获取签名的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 上传文件的更多相关文章

  1. Amazon S3 上传文件 SSL23_GET_SERVER_HELLO握手错误

    题外话:今天偶尔来逛逛,发现我真是懒到家了.居然有半年前的留言我都没有来看过,真对不起留言的同学,希望他的问题已经解决了. 这两三天一直被亚马逊S3上传文件的问题困扰着,直到昨天晚上终于搞定了,工作群 ...

  2. AWS S3 递归上传文件和递归下载文件, 以及S3之间拷贝文件夹

    1. 递归上传文件: aws s3 cp 本地文件夹 s3://bucket-name -- recursive --region us-east-1 2. 递归下载S3上的文件夹: cd  本地下载 ...

  3. 上传文件到aws的s3存储

    只要有aws-cli客户端就可以上传文件到aws的S3存储.可以在任意机器上.这里以centos为例. 1.安装python.pip. # yum install -y python python-p ...

  4. Linux系统通过AWS命令行上传文件至S3

    打开你的AWS控制台: 在IAM中创建一个新用户(比如test),创建时它会自动创建一个用户安全凭证,是由“访问密钥ID”和“私有访问密钥”组成的,请记住它并下载该凭证,后面会用到它: 选择你刚创建的 ...

  5. Mac安装aws-cli全过程,通过命令行上传文件到aws s3协议服务器

    第一次使用aws,首先查询了各种资料,我第一步需要做的是安装aws-cli,而安装aws-cli之前需要安装python3,当然你安装python3之前你还需要安装homebrew,当然我正在安装的过 ...

  6. 亚马逊s3存储: aws cli上传工具速度和各文件大小关系探究

    1,背景介绍 公司最近最近统一了存储环境,由ftp文件存储全量转换为ceph存储.有业务组表示以前往ftp文件批量上传30万个文件1.3GB只需要16分钟左右.切换为ceph存储需要1个多小时,也就是 ...

  7. centos6.8 上传文件到amazon s3

    centos6.8 上传文件到amazon s3 0.参考 AWS CLI Cinnabd Reference Possible to sync a single file with aws s3 s ...

  8. aws上传文件、删除文件、图像识别

    目录 aws的上传.删除s3文件以及图像识别文字功能 准备工作 安装aws cli 初始化配置AWS CLI s3存储桶开通 图像识别文字功能开通 aws的sdk 上传文件 方法一 方法二 删除文件 ...

  9. 亚马逊S3下载上传文件

    引用网址: http://www.jxtobo.com/27697.html 下载 CloudBerry Explorer http://www.cloudberrylab.com/download- ...

随机推荐

  1. 零元学Expression Blend 4 - Chapter 37 看如何使用Clip修出想要的完美曲线(上)

    原文:零元学Expression Blend 4 - Chapter 37 看如何使用Clip修出想要的完美曲线(上) 几何外部的 UIElement 会在呈现的配置中以视觉化方式裁剪. 几何不一定要 ...

  2. C#应用配置信息保存和读取

    //保存信息 SystemConfig.WriteConfigData(“字段名称”, “这里是需要保存的内容”); //读取信息 SystemConfig.GetConfigData(“字段名称”, ...

  3. html5创建的sqlite存放为止以及在手机中的位置

    C:\Users\xiaoai\AppData\Local\Google\Chrome\User Data\Default\databases\http_127.0.0.1_8020 如图:这是用bh ...

  4. jQuery实时聊天jquery-chat

    jquery-chat是基于jQuery UI + Node.js + Socket.IO 实现100%纯JavaScript实时聊天(客户端和服务器都是JS),实现了facebook / Gmail ...

  5. DELPHI之关于String的内存分配(引)

    在函数.过程或者方法中定义一个字符串变量时,由于我们知道在函数.过程或者方法中定义的变量为局部变量,它的内存 是在栈中分配的,但是这里有个小细节我们要注意,对于一个局部的字符串变量,它的大小为4字节, ...

  6. c# winfrom 可折叠的树形控件

    首先需要一个可绑定实体 [Serializable] public class TreeNodeModel { private Image _nodePic; /// <summary> ...

  7. mac下 编译php的 openssl

    编译openssl.so tar zxvf php-7.2.8.tar.gz# 进入PHP的openssl扩展模块目录cd php-7.2.8/ext/openssl/brew install ope ...

  8. Java 函数传入参数后,究竟发生了什么?java函数传参数原理解析

    JAVA函数在传入参数A时,会在函数作用周期内生成一个与参数相同类型的局部变量B. B与A指向同一块内存区域,并且具有相同的名字如param. 在函数内所有对param的操作都是对B的操作.对B进行赋 ...

  9. HTML连载12-体验CSS

    一.通过标签来修改标签有哪些缺点: (1)需要记忆那些标签有哪些属性 (2)若该标签没有这个属性,则修改失败 (3)需求变更,需要修改大量的代码 (4)HTML标签及用于添加语义,与我们的定义不相符 ...

  10. Spring Cloud Gateway使用

    简介 Spring Cloud Gateway是Spring Cloud官方推出的网关框架,网关作为流量入口,在微服务系统中有着十分重要的作用,常用功能包括:鉴权.路由转发.熔断.限流等. Sprin ...