Post上传对象
createPresignedPost接口为一个指定对象生成一个支持post方式上传文件的参数集合,可以在前端使用post form-data的方式上传文件。
generatePostObjectSignedUrl:function () {
console.log("generatePostObjectSignedUrl")
let key = "ExampleObject.txt"
let params = {
Bucket: this.bucket,
Fields: {
key: key
},
Conditions: [
['starts-with', '$key', key],
//{"acl": "public-read" }, // 设置acl
//["starts-with", "$Content-Type", "image/jpeg"] // 设置content-type
//["content-length-range", 10, 1024], // 限制上传的文件大小
],
Expires: 900,
};
this.s3Client.createPresignedPost(params, function(err, data) {
if (err) {
console.error('Presigning post data encountered an error', err);
} else {
console.log('The post data is', data);
}
});
},
参数如下:
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
Bucket | 字符串 | bucket的名称 | 是 |
Key | 字符串 | 对象的key | 是 |
Expires | 整型数 | 超时时间(秒) | 否,默认900秒 |
前端使用方式如下:
<form action="<data.url>" method="POST" enctype="multipart/form-data">
<input type="hidden" name="Policy" value="<data.fields["Policy"]>" />
<input type="hidden" name="X-Amz-Algorithm" value="<data.fields["X-Amz-Algorithm"]>" />
<input type="hidden" name="X-Amz-Credential" value="<data.fields["X-Amz-Credential"]>" />
<input type="hidden" name="X-Amz-Date" value="<data.fields["X-Amz-Date"]>" />
<input type="hidden" name="X-Amz-Signature" value="<data.fields["X-Amz-Signature"]>" />
<input type="hidden" name="bucket" value="<data.fields["bucket"]>" />
<input type="hidden" name="key" value="<data.fields["key"]>" />
<input type="file" name="file" value="" />
<input type="submit" value="Submit" />
</form>