2016-05-16 11 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); 
    }); 
}; 

私はこの作業を(まだ)行う方法がわかりません。Amazon S3ファイルを削除するには/ nodejs/angular

最初は「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.module('clientApp').factory('Uploads', function($http) { 
    return { 
    delete: function(data){ 
     console.log('delete fired'); 
     return $http.post('/awsDelete', data); 
    } 
    }; 
}); 

アングルコントローラ:

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

私はちょうどノードでこれをテストし、それはあなたがあなた自身のアクセスキー、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と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のために働いています。

関連する問題