2017-12-18 9 views
0

私は、JSONコンテンツからその場でCSVファイルを作成し、最初にファイルをローカルに保存するのではなく、S3バケット上に生成されたCSVファイルをアップロードしています。NodeJSを使用してS3バケットにCSVファイルをアップロードする方法は?

以下は私のCSVファイルをS3バケットにアップロードしたものの、正しいCSV形式ではないようです。

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

}

また、私はJSONからcsvファイルコンテンツを生成するために "json2csv" npmモジュールを使用しています。以下は

はコードです:

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,[]); 
    } 
} 

私たちは、上記のコードが間違っている場合教えてください。

答えて

0

add ContentDisposition:あなたのparamsにも 'attachment'が追加されました。

は、そうでない場合、あなたはまた、ファイルを読み込み、

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

私は上記のヘッダーを使用してみましたが、正しい結果が得られませんでした。 –

+0

エラーを私にpingしてください – Vipul

+0

こんにちは私は上記のヘッダーをもう一度試して、それは動作し、私は別のコメントで全体のコードを追加しました。ありがとう –

1

こんにちは、私は以下のヘッダー値で再び試してみましたS3にアップロードして、それが私のために働いたことができます。以下はコードです

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); 
    } 
}); 
関連する問題