скопировать все файлы nodejs - PullRequest
0 голосов
/ 27 октября 2018

Как скопировать все файлы из 'bucketname / one / two / one.file' в другое ведро, может кто-нибудь отредактировать мой код для выполнения такой операции

  var params = {
  Bucket: "destinationbucket", 
  CopySource: "/sourcebucket/HappyFacejpg", 
  Key: "HappyFaceCopyjpg"
 };
 s3.copyObject(params, function(err, data) {
   if (err) console.log(err, err.stack); // an error occurred
   else     console.log(data);           // successful response

 });

1 Ответ

0 голосов
/ 27 октября 2018

Для одной копии файла вы можете использовать этот метод.Для всей папки вам нужно перечислить файлы из исходной папки, а затем скопировать файлы.Пример рабочего кода:

const AWS = require('aws-sdk');
AWS.config.loadFromPath('./AwsConfig.json');
var s3 = new AWS.S3({
    params: {
        Bucket: bucketName
    },
    region: XXX
});

// list all files from source folder
s3.listObjects({
    Prefix: sourceFolder
}, function (err, data) {
    if (err) {
        console.log(err, err.stack);
    } // an error occurred
    else {
        if (data.Contents.length) {
            for (i = 1; i <= data.Contents.length; i++) {
                if (data.Contents[i]) {
                    var params = {
                        CopySource: bucketName + '/' + data.Contents[i].Key,
                        Key: data.Contents[i].Key.replace(sourceFolder, destinationFolder)
                    };
                    // copy object to destination folder
                    s3.copyObject(params, function (copyErr, copyData) {
                        if (copyErr) {
                            console.log(err);
                        } else {
                            console.log('Copied: ', params.Key);
                        }
                    });
                }
            }
        }
    }
});  

Попробуйте @Dusky Dood
Обновленный код

const AWS = require('aws-sdk');
AWS.config.loadFromPath('./AwsConfig.json');
var s3 = new AWS.S3();

// region: 'ap-southeast-2'

// list all files from source folder
s3.listObjects({
    Bucket: "sourceBucket",
    Prefix: "sourceFolder"
}, function (err, data) {
    if (err) {
        console.log(err, err.stack);
    } // an error occurred
    else {
        if (data.Contents.length) {
            for (i = 1; i <= data.Contents.length; i++) {
                if (data.Contents[i]) {
                    var params = {
                        Bucket: "destinationBucket",
                        Key: data.Contents[i].Key
                    };
                    // copy object to destination folder
                    s3.putObject(params, function(err, data) {
                        console.log('uploaded') // File uploads correctly.
                    });
                    // s3.copyObject(params, function (copyErr, copyData) {
                    //     if (copyErr) {
                    //         console.log(err);
                    //     } else {
                    //         console.log('Copied: ', params.Key);
                    //     }
                    // });
                }
            }
        }
    }
});  

Обновление2 Вотточный код, который я точно использовал,

const AWS = require('aws-sdk');
AWS.config.loadFromPath('./AwsConfig.json');
var s3 = new AWS.S3();

// region: 'ap-southeast-2'

// list all files from source folder
s3.listObjects({
    Bucket: "bucket1", // source bucket name
    Prefix: "report" // source folder
}, function (err, data) {
    if (err) {
        console.log(err, err.stack);
    } // an error occurred
    else {
        if (data.Contents.length) {
            for (i = 1; i <= data.Contents.length; i++) {
                if (data.Contents[i]) {
                    var params = {
                        Bucket: "bucket2", // second bucket ie) destination
                        // new folder: reportNew inside second bucket 
                        Key: `reportNew/${data.Contents[i].Key}`.replace('report/', '')
                    };
                    // copy object to destination folder
                    s3.putObject(params, function(err, data) {
                        console.log('uploaded') // File uploads correctly.
                    });
                    // s3.copyObject(params, function (copyErr, copyData) {
                    //     if (copyErr) {
                    //         console.log(err);
                    //     } else {
                    //         console.log('Copied: ', params.Key);
                    //     }
                    // });
                }
            }
        }
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...