Javascript Amazon S3上传图像-直接从浏览器使用angular js

Javascript Amazon S3上传图像-直接从浏览器使用angular js,javascript,angularjs,amazon-web-services,amazon-s3,Javascript,Angularjs,Amazon Web Services,Amazon S3,我正在尝试使用angular js将图像从浏览器直接上传到Amazon S3 下面是我的代码 function _upload($files) { $scope.file = $files[0]; $scope.creds = { access_key: '***', secret_key: '***', buck

我正在尝试使用angular js将图像从浏览器直接上传到Amazon S3

下面是我的代码

function _upload($files) {
                $scope.file = $files[0];
                $scope.creds = {
                    access_key: '***',
                    secret_key: '***',
                    bucket: 'sabari-test'
                };

                var bucket = new AWS.S3({
                    params: {
                        Bucket: $scope.creds.bucket
                    }
                });
                AWS.config.accessKeyId = $scope.creds.access_key;
                AWS.config.secretAccessKey = $scope.creds.secret_key;
                AWS.config.region = 'us-west-2';

                // AWS.

                if ($scope.file) {
                    // Perform File Size Check First
                    var fileSize = Math.round(parseInt($scope.file.size));
                    if (fileSize > $scope.sizeLimit) {
                        console.log('Sorry, your attachment is too big.');
                        return false;
                    }
                    // Prepend Unique String To Prevent Overwrites
                    var uniqueFileName = 'hai' + '-' + $scope.file.name;

                    var params = {
                        Key: uniqueFileName,
                        ContentType: $scope.file.type,
                        Body: $scope.file,
                        ServerSideEncryption: 'AES256'
                    };

                    bucket.putObject(params, function(err, data) {
                        if (err) {
                            console.log(err.message);
                            return false;
                        } else {
                            // Upload Successfully Finished
                            console.log('File Uploaded Successfully');
                        }
                    })
                } else {
                    // No File Selected
                    console.log('Please select a file to upload');
                }
            }
我得到以下错误:

“配置中缺少凭据”

请让我知道丢失的凭证是什么


谢谢。

您需要更换这些线路:

            var bucket = new AWS.S3({
                params: {
                    Bucket: $scope.creds.bucket
                }
            });
            AWS.config.accessKeyId = $scope.creds.access_key;
            AWS.config.secretAccessKey = $scope.creds.secret_key;
            AWS.config.region = 'us-west-2';
为此:

            var bucket = new AWS.S3({
                region = 'us-west-2',
                credentials: new AWS.Credentials($scope.creds.access_key, $scope.creds.secret_key)
            });
然后将桶移动到您的
var参数

                var params = {
                    Bucket: $scope.creds.bucket,
                    Key: uniqueFileName,
                    ContentType: $scope.file.type,
                    Body: $scope.file,
                    ServerSideEncryption: 'AES256'
                };

出于好奇:你的JS文件中有这个,任何人都可以看到吗?您是否知道任何人都可以访问您的Amazon S3凭据?您不想在后端执行此操作吗?是的,我是。谢谢。我这样做是为了实现流程工作。稍后,我将通过节点js进行路由。仍然会出现相同的错误。我是否应该将这个AWS.Config分配给某个变量,作为param传递给bucket param。。在某种程度上?因为据我所知,我没有看到AWS.Config连接到bucket。putObject@sabari我刚刚更新了答案,很抱歉,请尝试我的新建议,我认为现在应该可以了。谢谢我试过这个乔塞普。我得到了相同的错误“配置中缺少凭据”,我可以这样定义:AWS.config.credentials=。。。;正如@sabari抱歉,我困了,我刚刚做了另一个更新,请尝试一下,我很确定这将消除这个错误。