7

Ich benutze nodejs, um Dateien auf aws-Server hochzuladen. und festgestellt, dass die Dateigröße nicht richtig da ist. Ich bekomme 2.1KB.Streaming-s3 ist nicht korrekt uplaoding Datei zu aws

hier ist mein Code

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); 
    }); 

}; 

obwohl, ich Dateinamen Eimer in meinem aws bekam. aber dann versuche ich, die Datei zu öffnen, sagt es gescheitert.

Ich versuche, diese Datei von URL zu laden: https://arxiv.org/pdf/1701.00003.pdf

Anregungen bitte?

Dank

Antwort

2

Es keine Notwendigkeit mehr für ein externes Modul ist für Ströme bis s3 hochladen. Jetzt gibt es eine neue Methode in aws-sdk namens s3.upload, die einen beliebig großen Puffer, Blob oder Stream hochladen kann. Sie können die Dokumentation I verwendet here

Den Code überprüfen:

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); 
 
})

Zu meinem Punkt noch weiter zu beweisen, dass ich den Code mit dem pdf versucht, Sie in Ihrer Frage gestellt und hier ist die link für meine Test-Bucket zeigt, dass das PDF wie erwartet funktioniert.

+0

: - Ich bekomme Probleme in dieser URL nur, wenn ich mit obigen Code Doign. Jetzt ist das Projekt abgeschlossen, es gibt keinen Grund, den Code zu ändern –

+0

Können Sie mir sagen, was ist das Problem in oben genannten Code? –

Verwandte Themen