如何从客户端javascript将文件上载到s3公共存储桶而不使用凭据

如何从客户端javascript将文件上载到s3公共存储桶而不使用凭据,javascript,amazon-web-services,Javascript,Amazon Web Services,我们希望使用Javascript AWS SDK将文件上载到S3,但根本不使用凭据。使用凭证上传有效 我们有一个bucket,它拥有任何人的权限,当我试图上传文件时,可以上传和下载文件。我遇到了这个错误 message: "No credentials to load" mycode: var bucket = new AWS.S3({params: {Bucket: 'bucketName'}}); var params = {Key: 'data.txt', Body: "kkkkkk

我们希望使用Javascript AWS SDK将文件上载到S3,但根本不使用凭据。使用凭证上传有效

我们有一个bucket,它拥有任何人的权限,当我试图上传文件时,可以上传和下载文件。我遇到了这个错误

message: "No credentials to load"
mycode:

var bucket = new AWS.S3({params: {Bucket: 'bucketName'}});

 var params = {Key: 'data.txt', Body: "kkkkkkkkkkkk"};

bucket.putObject(params, function (err, data) {
alert(err)

});

如果您已经为所有用户设置了读/写权限,并且您的bucket的cors配置允许PUT请求,那么您应该能够简单地使用ajax进行操作:

function httpReq(method, url, data, successCB, errorCB) {
    var xhr = new XMLHttpRequest();

    xhr.addEventListener('load', function () {
        if (xhr.status == 200) {
            successCB(xhr.response);
        } else {
            errorCB({status: xhr.status, response: xhr.response});
        }
    });

    xhr.open(method, url, true);
    xhr.send(data);
}

httpReq('PUT', 'http://yourBucket.s3.amazonaws.com/yourKey', file, function (response) {
    console.log('Upload Successful', response);
}, function (error) {
    console.error(error);
});