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

标签 javascript angularjs amazon-web-services amazon-s3

我正在尝试使用 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)
            });

然后将 Bucket 移动到您的 var params

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

关于javascript - Amazon S3 上传图像 - 直接从浏览器使用 Angular js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25946167/

相关文章:

javascript - 不确定为什么 ng-repeat-start 和 ng-repeat-end 抛出异常

javascript - 如何不间断地连续播放声音?

javascript - 在非对象上调用 React iframe youtube : Object. defineProperty

javascript - javascript 中无法出现下拉菜单?

javascript - 使用确认从按钮中的 JavaScript 停止 Angular

python - 如何使用 Chalice 处理 DynamoDB 流事件

javascript - 如何在 Canvas 上重新着色灰度图像

angularjs - 如何使用 Angular 2 CLI 设置 Istanbul 尔代码覆盖率?

mysql - 从远程服务器获取 mysql 数据库列中的当前时间戳到本地的问题

amazon-web-services - 当受到 EC2 中标签受限资源级别权限的限制时,如何使 IAM 用户能够设置名称和其他自定义标签