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>