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- ...
随机推荐
- python3. 报“ImportError: No module named ‘MySQLdb'”
需要安装PyMysql pip install PyMysql 然后在程序中引入 import pymysql pymysql.install_as_MySQLdb() app.config['SQL ...
- Window 下 MySQL 环境的安装
Window 下 MySQL 环境的安装 简介: MySQL 是最流行的关系型数据库管理系统,在WEB应用方面 MySQL 是最好的RDBMS(Relational Database Manageme ...
- IDisposeable 最佳实现
public class MyClass : IDisposable { #region 变量声明 // 指向外部非托管资源 private IntPtr handle; // 此类使用的其它托管资源 ...
- delphi文件操作(比较全)
Delphi中默认有input和output两个文件变量,使用可以不用定义,直接使用. 但: input:只读.output:只写.用时注意以免引起异常. 文件是由文件名标识的一组数据的集合,文件通常 ...
- 微信小程序把玩(十二)text组件
原文:微信小程序把玩(十二)text组件 通常文本设置要不在wxml中设置,再要不就是通过weml绑定在js中设置文字. wxml <view > <text>我是文本组件&l ...
- SignalR---服务端
原文:SignalR---服务端 前段时间把SignalR的官网教程大致看了一下,算是翻译了一遍,加上了自己的个人理解, 一下上传三个文件,分别是服务端.web客户端.DOTNET客户端相关文档,供大 ...
- xgboost参数及调参
常规参数General Parameters booster[default=gbtree]:选择基分类器,可以是:gbtree,gblinear或者dart.gbtree和draf基于树模型,而gb ...
- ASP.NET Core 下自定义模型绑定,去除字符串类型前后的空格
效果图: 01 02 直接贴代码了: NoTrim public class NoTrimAttribute : Attribute { } 我们自定义的模型绑定提供程序 /// <summar ...
- DIOCP3 DEMO的编译(去掉VCL前缀)
总有些朋友问我,关于DEMO编译的一些问题,每次都回答大概都差不多,我想还是写篇说明书给大家,关于DEMO编译的步骤. [环境设定] 1.将DIOCP3\source路径添加到Delphi的搜索路径, ...
- hdu4767_Bell_矩阵快速幂+中国剩余定理
2013长春赛区网络赛的1009题 比赛的时候这道题英勇的挂掉了,原因是写错了一个系数,有时候粗心比脑残更可怕 本题是关于Bell数,关于Bell数的详情请见维基:http://en.wikipedi ...