7

awsサーバにファイルをアップロードするためにnodejsを使用しています。ファイルサイズが正しくないことがわかりました。私は2.1KBを得ています。私は私のAWSバケットにファイル名を得た、けれどもストリーミングs3がawsファイルを正常に作成できない

は、ここに私のコード

var uploadFile = function (fileReadStream, awsHeader, cb) { 

    //set options for the streaming module 
    var options = { 
     concurrentParts: 2, 
     waitTime: 20000, 
     retries: 2, 
     maxPartSize: 10 * 1024 * 1024 
    }; 
    //call stream function to upload the file to s3 
    var uploader = new streamingS3(fileReadStream, config.aws.accessKey, config.aws.secretKey, awsHeader, options); 
    //start uploading 
    uploader.begin();// important if callback not provided. 

    // handle these functions 
    uploader.on('data', function (bytesRead) { 
     //console.log(bytesRead, ' bytes read.'); 
    }); 

    uploader.on('part', function (number) { 
     //console.log('Part ', number, ' uploaded.'); 
    }); 

    // All parts uploaded, but upload not yet acknowledged. 
    uploader.on('uploaded', function (stats) { 
     //console.log('Upload stats: ', stats); 
    }); 

    uploader.on('finished', function (response, stats) { 
     console.log(response); 
     cb(null, response); 
    }); 

    uploader.on('error', function (err) { 
     console.log('Upload error: ', err); 
     cb(err); 
    }); 

}; 

です。しかし、私はそれが失敗したと言うファイルを開こうとします。

私は、URLからこのファイルをアップロードしようとしています:https://arxiv.org/pdf/1701.00003.pdf

任意の提案をしてください?

おかげ

答えて

2

S3にストリームをアップロードするための外部モジュールのためのもう必要はありません。 aws-sdkにs3.uploadという新しいメソッドがあり、任意のサイズのバッファ、blob、またはストリームをアップロードできます。

const aws = require('aws-sdk'); 
 
const s3 = new aws.S3({ 
 
    credentials:{ 
 
     accessKeyId: "ACCESS_KEY", 
 
     secretAccessKey: "SECRET_ACCESS_KEY" 
 
    } 
 
}); 
 
const fs = require('fs'); 
 
const got = require('got'); 
 

 
//fs stream test 
 
s3.upload({ 
 
    Bucket: "BUCKET_NAME", 
 
    Key: "FILE_NAME", 
 
    ContentType: 'text/plain', 
 
    Body: fs.createReadStream('SOME_FILE') 
 
}) 
 
.on("httpUploadProgress", progress => console.log(progress)) 
 
.send((err,resp) => { 
 
    if(err) return console.error(err); 
 
    console.log(resp); 
 
}) 
 

 

 
//http stream test 
 
s3.upload({ 
 
    Bucket: "BUCKET_NAME", 
 
    Key: "FILE_NAME", 
 
    ContentType: 'application/pdf', 
 
    Body: got.stream('https://arxiv.org/pdf/1701.00003.pdf') 
 
}) 
 
.on("httpUploadProgress", progress => console.log(progress)) 
 
.send((err,resp) => { 
 
    if(err) return console.error(err); 
 
    console.log(resp); 
 
})

をさらに私は、あなたの質問に投稿されたPDFファイルでコードを試してみました、ここで私のポイントを証明するために:あなたは、ドキュメントhere

私が使用したコードを確認することができますlink私のテストバケットは、pdfが期待通りに動作することを示しています。

+0

: - 上記のコードを使用しているときにのみ、私はそのURLに問題が発生しています。今すぐプロジェクトが完了しましたコードを変更するためのポイントがありません –

+0

上記のコードの問題点は教えてください。 –

関連する問題