2017-12-18 3 views
0

Ich erstelle eine CSV-Datei aus dem JSON-Inhalt und lade die generierte CSV-Datei auf S3-Bucket hoch, anstatt zuerst die Datei lokal zu speichern.Wie CSV-Datei auf S3 Bucket mit NodeJS hochladen?

Unten ist mein Code-Snippet, wie unter Code verwendet meine CSV-Datei auf S3-Bucket hochgeladen, aber es scheint nicht im richtigen CSV-Format zu sein.

var uploadCSVFileOnS3Bucket = function(next, csvFileContent,results) { 
console.log("uploadCSVFileOnS3Bucket function started"); 
var bufferObject = new Buffer.from(JSON.stringify(csvFileContent)); 
var filePath = configurationHolder.config.s3UploadFilePath; 
var s3 = new AWS.S3(); 
var params = { 
    Bucket: 'bucket_name' 
    Key: 's3UploadFilePath', 
    Body: bufferObject, 
    CacheControl:'public, max-age=86400' 
} 
s3.upload(params, function(err, data) { 
    if (err) { 
     console.log("Error at uploadCSVFileOnS3Bucket function",err); 
     next(err); 
    } else { 
     console.log("File uploaded Successfully"); 
     next(null, filePath); 
    } 
}); 

};

Außerdem verwende ich "Json2csv" Npm-Modul zum Generieren von CSV-Datei Inhalt von JSON.

Unten ist der Code:

var generateCSVFile = function(next,callback,csvFileContent) { 
    console.log("generateCSVFile function started",csvFileContent); 
    if(csvFileContent && csvFileContent.length>0) { 
    var fields = ['field1','field2','field3',........]; 
    var csv = json2csv({ data: csvFileContent, fields: fields }); 
    console.log('created',csv); 
    next(null,csv); 
    } 
    else { 
    next(null,[]); 
    } 
} 

Bitte lassen Sie uns wissen, wo der obige Code nicht in Ordnung ist.

Antwort

0

fügen Sie ContentDisposition hinzu: 'attachment' auch in Ihren Parametern.

sonst können Sie auch Datei lesen und laden

fs.readFile(FILEPATH, function(err, file_buffer) { 
      var params = { 
       Bucket: //bucketname, 
       Key:key, 
       ContentDisposition: 'attachment', 
       Body: file_buffer 
      }; 
      s3.upload(params, function(err, data) { 
       if (err) { 
        console.log("Error in upload"); 
        callback(err, null) 
       } 
       if (data) { 
        console.log("Upload Success", data); 
        callback(null, data) 
       } 
      }); 
}); 
+0

Ich versuchte, den oben genannten Header zu verwenden, aber es lieferte mir das korrekte Ergebnis nicht. –

+0

können Sie bitte ping mich den Fehler – Vipul

+0

Hallo Ich habe es wieder mit dem obigen Header versucht und es funktioniert, habe ich den gesamten Code in einem separaten Kommentar hinzugefügt. Dank –

1

Hallo ich mit unten Header Werte versuchte es noch einmal bis s3 und es funktionierte für mich. Unten ist der Code:

var s3 = new AWS.S3(); 
var params = { 
    Bucket: bucketName, 
    Key: filePath, 
    Body: csvFileContent, 
    ContentType: 'application/octet-stream', 
    ContentDisposition: contentDisposition(filePath, { 
     type: 'inline' 
    }), 
    CacheControl: 'public, max-age=86400' 
} 
s3.putObject(params, function(err, data) { 
    if (err) { 
     console.log("Error at uploadCSVFileOnS3Bucket function", err); 
     next(err); 
    } else { 
     console.log("File uploaded Successfully"); 
     next(null, filePath); 
    } 
});