如何使用 nodejs / angular 删除 Amazon s3 文件
How to delete Amazon s3 file w/ nodejs / angular
var awsSdk = require('aws-sdk');
awsSdk.config = {
"accessKeyId": "key",
"secretAccessKey": "secret",
"region": "us-east-1"
}
var s3 = new awsSdk.S3({
accessKeyId: 'key',
secretAcessKey: 'secret'
});
exports.awsDelete = function(req, res){
s3.deleteObject({
Bucket: 'bucket',
Key: req.body.photo
}, function(err,data){
if (err) console.log('delete err', err);
console.log(data);
});
};
我(还)不知道如何进行这项工作。
最初,我遇到了 "no config" 错误,所以我在上面添加了 awsSdk.config json。现在,它只是挂起/暂停而没有错误。我在 req.body.photo.
中得到了预期的密钥
我的直觉是我的配置中遗漏了一些东西..
我错过了什么/搞砸了什么?
更新
我已经添加了下面建议的代码,但仍然没有运气。我将展示我是如何传递我的参数的:
更新了以下答案的代码:
'use strict';
var aws = require('./aws');
var amazon = require('aws-sdk');
amazon.config = new amazon.Config();
amazon.config.accessKeyId = aws.key;
amazon.config.secretAccessKey = aws.secret;
amazon.config.region = aws.region;
var s3 = new amazon.S3();
exports.awsDelete = function(req, res){
var params = {
Bucket: aws.bucket,
Key: res.body.photo
};
s3.deleteObject(params, function(err, data) {
if (err) console.log(err)
else console.log("Successfully deleted myBucket/myKey");
});
};
路线:
app.post('/awsDelete', uploads.awsDelete);
前端Angular:
工厂:
angular.module('clientApp').factory('Uploads', function($http) {
return {
delete: function(data){
console.log('delete fired');
return $http.post('/awsDelete', data);
}
};
});
angular 控制器:
angular.module('clientApp').controller('Distiller-editCtrl', function(Uploads){
$scope.item = {}
$scope.delete = function(){
Uploads.delete($scope.item).then(function(res){
console.log(res)
});
};
});
似乎是 'sort of works'。但是有些事情让它花费了非常长的时间:
POST /awsDelete 200 120007ms
如果我刷新页面,它也会成功删除它。
有没有人注意到我的代码中有什么可能导致这么长的响应时间。
此外,没有得到 "successfully completed" console.log
我刚刚在 node 中测试了它,它工作正常,显然你需要输入你自己的 accesskey、secretaccesskey、bucket 和 bucket key:
var AWS = require('aws-sdk');
AWS.config = new AWS.Config();
AWS.config.accessKeyId = "";
AWS.config.secretAccessKey = "";
AWS.config.region = "us-east-1";
var s3 = new AWS.S3();
var params = {
Bucket: 'test537658ghdfshgfd',
Key: '1.png'
};
s3.deleteObject(params, function(err, data) {
if (err) console.log(err)
else console.log("Successfully deleted myBucket/myKey");
});
或者您可以使用 Minio-Js 客户端库,它是开源的并且与 AWS S3 兼容。
下面是移除-object.js的例子,你可以找到完整的列表here
var Minio = require('minio')
var s3Client = new Minio({
endPoint: 's3.amazonaws.com',
accessKey: 'YOUR-ACCESSKEYID',
secretKey: 'YOUR-SECRETACCESSKEY'
})
// Remove an object name my-objectname.
s3Client.removeObject('my-bucketname', 'my-objectname', function(e) {
if (e) {
return console.log(e)
}
console.log("Success")
})
请将 YOUR-ACCESSKEYID 和 YOUR-SECRETACCESSKEY 替换为您自己的,并将端点替换为您创建存储桶的端点。
us-east-1: 's3.amazonaws.com',
us-west-1 : 's3-us-west-1.amazonaws.com',
us-west-2 : 's3-us-west-2.amazonaws.com',
eu-west-1: 's3-eu-west-1.amazonaws.com',
sa-east-1: 's3-sa-east-1.amazonaws.com',
eu-central-1: 's3-eu-central-1.amazonaws.com',
ap-southeast-1: 's3-ap-southeast-1.amazonaws.com',
ap-southeast-2: 's3-ap-southeast-2.amazonaws.com',
ap-northeast-1: 's3-ap-northeast-1.amazonaws.com'
正在安装 Monio-js
$ npm install --save minio
希望对您有所帮助。
免责声明:我为 Minio 工作。
var awsSdk = require('aws-sdk');
awsSdk.config = {
"accessKeyId": "key",
"secretAccessKey": "secret",
"region": "us-east-1"
}
var s3 = new awsSdk.S3({
accessKeyId: 'key',
secretAcessKey: 'secret'
});
exports.awsDelete = function(req, res){
s3.deleteObject({
Bucket: 'bucket',
Key: req.body.photo
}, function(err,data){
if (err) console.log('delete err', err);
console.log(data);
});
};
我(还)不知道如何进行这项工作。
最初,我遇到了 "no config" 错误,所以我在上面添加了 awsSdk.config json。现在,它只是挂起/暂停而没有错误。我在 req.body.photo.
中得到了预期的密钥我的直觉是我的配置中遗漏了一些东西..
我错过了什么/搞砸了什么?
更新 我已经添加了下面建议的代码,但仍然没有运气。我将展示我是如何传递我的参数的:
更新了以下答案的代码:
'use strict';
var aws = require('./aws');
var amazon = require('aws-sdk');
amazon.config = new amazon.Config();
amazon.config.accessKeyId = aws.key;
amazon.config.secretAccessKey = aws.secret;
amazon.config.region = aws.region;
var s3 = new amazon.S3();
exports.awsDelete = function(req, res){
var params = {
Bucket: aws.bucket,
Key: res.body.photo
};
s3.deleteObject(params, function(err, data) {
if (err) console.log(err)
else console.log("Successfully deleted myBucket/myKey");
});
};
路线:
app.post('/awsDelete', uploads.awsDelete);
前端Angular:
工厂:
angular.module('clientApp').factory('Uploads', function($http) {
return {
delete: function(data){
console.log('delete fired');
return $http.post('/awsDelete', data);
}
};
});
angular 控制器:
angular.module('clientApp').controller('Distiller-editCtrl', function(Uploads){
$scope.item = {}
$scope.delete = function(){
Uploads.delete($scope.item).then(function(res){
console.log(res)
});
};
});
似乎是 'sort of works'。但是有些事情让它花费了非常长的时间:
POST /awsDelete 200 120007ms
如果我刷新页面,它也会成功删除它。 有没有人注意到我的代码中有什么可能导致这么长的响应时间。
此外,没有得到 "successfully completed" console.log
我刚刚在 node 中测试了它,它工作正常,显然你需要输入你自己的 accesskey、secretaccesskey、bucket 和 bucket key:
var AWS = require('aws-sdk');
AWS.config = new AWS.Config();
AWS.config.accessKeyId = "";
AWS.config.secretAccessKey = "";
AWS.config.region = "us-east-1";
var s3 = new AWS.S3();
var params = {
Bucket: 'test537658ghdfshgfd',
Key: '1.png'
};
s3.deleteObject(params, function(err, data) {
if (err) console.log(err)
else console.log("Successfully deleted myBucket/myKey");
});
或者您可以使用 Minio-Js 客户端库,它是开源的并且与 AWS S3 兼容。
下面是移除-object.js的例子,你可以找到完整的列表here
var Minio = require('minio') var s3Client = new Minio({ endPoint: 's3.amazonaws.com', accessKey: 'YOUR-ACCESSKEYID', secretKey: 'YOUR-SECRETACCESSKEY' }) // Remove an object name my-objectname. s3Client.removeObject('my-bucketname', 'my-objectname', function(e) { if (e) { return console.log(e) } console.log("Success") })
请将 YOUR-ACCESSKEYID 和 YOUR-SECRETACCESSKEY 替换为您自己的,并将端点替换为您创建存储桶的端点。
us-east-1: 's3.amazonaws.com', us-west-1 : 's3-us-west-1.amazonaws.com', us-west-2 : 's3-us-west-2.amazonaws.com', eu-west-1: 's3-eu-west-1.amazonaws.com', sa-east-1: 's3-sa-east-1.amazonaws.com', eu-central-1: 's3-eu-central-1.amazonaws.com', ap-southeast-1: 's3-ap-southeast-1.amazonaws.com', ap-southeast-2: 's3-ap-southeast-2.amazonaws.com', ap-northeast-1: 's3-ap-northeast-1.amazonaws.com'
正在安装 Monio-js
$ npm install --save minio
希望对您有所帮助。
免责声明:我为 Minio 工作。