Javascript Amazon S3上传图像-直接从浏览器使用angular js
我正在尝试使用angular js将图像从浏览器直接上传到Amazon S3 下面是我的代码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
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抱歉,我困了,我刚刚做了另一个更新,请尝试一下,我很确定这将消除这个错误。