2016-05-16 33 views
2
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); 
    }); 
}; 

我想不出如何使這項工作(還)。如何刪除亞馬遜s3文件瓦特/節點/角

最初,我得到一個「無配置」的錯誤,所以我添加了上面的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.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) 
    }); 
    }; 
}); 

看來,這 '樣的作品'。但有些東西需要很長時間:

POST /awsDelete 200 120007ms 

如果我刷新頁面,導致它也成功刪除它。 有沒有人注意到我的代碼中可能會導致如此長的響應時間。

而且,沒有得到「成功完成」的console.log

+0

有類似的問題.. – someoneHere

回答

1

我只是在節點測試這一點,它工作得很好,很明顯,你需要把自己的ACCESSKEY,secretaccesskey,桶和桶的關鍵:

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"); 
}); 
+0

仍然有這個問題。 我做了一個角度$ http.post的休息調用,發送req.body中的密鑰,並將其傳遞給params(如上所述),但它保持超時而沒有錯誤。如果我刷新頁面,我會在摩根遇到500錯誤。 – NoobSter

0

或者,您可以使用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") 
}) 

請用自己取代你,ACCESSKEYID和你-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工作。