Скопируйте файл из одной корзины AWS S3 в другую корзину с помощью Node - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь скопировать файл из корзины AWS S3 в другую корзину с помощью Node.Проблема в том, что если имя файла не имеет пробела, например: "abc.csv", оно работает нормально.Но в случае, если файл, в который я хочу скопировать, имеет пробел в имени файла, например: «abc xyz.csv».Выдает приведенную ниже ошибку.

«Указанный ключ не существует»."NoSuchKey: указанный ключ не существует. В Request.extractError (d: \ Projects \ Other \ testproject \ s3filetoarchieve \ node_modules \ aws-sdk \ lib \ services \ s3.js: 577: 35)

Ниже приведен код.

return Promise.each( files, file => {
        var params = {
            Bucket: process.env.CR_S3_BUCKET_NAME, 
            CopySource: `/${ process.env.CR_S3_BUCKET_NAME }/${ prefix }${ file.name}`, 
            Key: `${ archieveFolder }${ file.name }`
        };
        console.log(params);
        return new Promise(( resolve, reject) => {
            s3bucket.copyObject(params, function(err, data) {
                if (err){
                    console.log(err, err.stack); 
                    debugger
                } else {
                    console.log(data); 
                    debugger
                }             
            });
        });
    }).then( result => {
        debugger
    });

Ранняя помощь будет весьма полезна. Спасибо.

1 Ответ

0 голосов
/ 13 июня 2018

Я думаю, что проблема именно в том, что пробел в имени файла.

Ключи S3 должны быть закодированы в URL, так как они должны быть доступны в форме URL.Есть некоторые пакеты, которые помогают вам с форматированием URL, например writingUrl , или вы можете попробовать написать некоторые самостоятельно, возможно, просто заменив пробелы (\s) на дефисы (_ or -), если вы хотите сохранитьэто дружелюбно.

Если вы не возражаете против этого, вы можете просто encodeURIComponent(file.name)

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...