- 安装AWS SDK
npm install aws-sdk
2.需要配置AWS凭证,以便可以访问S3服务(一般后端配置)
const bucketName = 'Your bucket name';
const region = 'Your bucket region';
const accessKeyId = 'Your accessKeyId';
const secretAccessKey = 'Your secretAccessKey';
const s3 = new AWS.S3({
accessKeyId,
secretAccessKey,
region
});
3.上传处理
const { selectedFile } = this.state;
const contentType = selectedFile.type;
const params = {
Bucket: bucketName,
Key: 'video/' + 文件名, //上传的目录
Body: selectedFile, // 文件对象
ContentType: contentType, // 文件类型
ACL: 'public-read'
}
s3.upload(params, (err, data) => {
if (err) {
console.error(err);
} else {
console.log('File uploaded successfully:', data.Location);
}
});
【上传配置】
Bucket:指定要上传到的S3存储桶的名称。
Key:指定上传文件在S3存储桶中的目标路径。
Body:指定要上传的文件内容。
ACL:指定上传文件的访问权限。常见的值包括private(私有)、public-read(公共读取)和public-read-write(公共读写)。
ContentType:指定上传文件的内容类型。
ContentDisposition:指定上传文件的内容描述。
ContentEncoding:指定上传文件的内容编码。
ContentLength:指定上传文件的内容长度。
CacheControl:指定上传文件的缓存控制。
Metadata:指定上传文件的元数据。
注意:此方法存在安全性问题,会暴露ak/sk,建议改成:
后端去aws生成一个有时间限制的签名aws域名的url
前端通过这个url直接上传aws
这样,ak/sk还是存储在后端,没有被前端暴露的风险