2016-09-07 2 views
0

в этом коде я получаю р (путь к файлу) и его можно загрузитьКак записать файл перед сохранением оригинала на диске?

function createCSV(){ 
    return mytmp.getTempDir((tmpPath) => { 
    return new Promise(function (resolve, reject) { 

     let p = path.resolve(tmpPath, "snake_case_users33.csv"); 
     var ws = fs.createWriteStream(p); 

     csv 
     .write([ 
      {a: "a1", b: "b1"}, 
      {a: "a2", b: "b2"} 
     ], {headers: true}) 
     .pipe(ws); 

     resolve(p); 

    }); 
    }); 
} 

Но мне нужно, чтобы пронестись .csv файл, либо до даты форматирования или при первом форматировании CSV-файл, после того, как застегнуть его и сэкономить на диске и получить путь.

в начале мне нужно создать CSV:

let p = path.resolve(tmpPath, "snake_case_users.csv"); 
 
     var output = fs.createWriteStream(p); 
 
     csv.write([ 
 
      {a: "a1", b: "b1"}, 
 
      {a: "a2", b: "b2"} 
 
      ], {headers: true}); 
 

 
//below let zipPath = path.resolve(tmpPath, "snake_case_users.zip"); and zip

возможно после того, как мы могли бы использовать zipPath застегнуть этот CSV-то?

+0

Предложение после вашего кода немного запутывает. Можете ли вы попытаться изменить это? – leigero

+0

@leigero, я хотел бы заархивировать форматированный файл csv и получить путь к загрузке одного – AxOn

ответ

0

Предлагаю использовать модуль архивирования.

https://github.com/archiverjs/node-archiver

Это очень проста в использовании и может обернуть даже всю папку, в молнии.

Вот пример кода, чтобы сделать молнию из папки

function archive (cb) { 

    var archive = require('archiver'); 
    var timestamp = new Date().getTime().toString(); 
    // this self.logPath + '/archive' + timestamp + '.zip' is the path to zip file. 
    //You can use any path you like. 
    var zipPath = self.logPath + '/archive' + timestamp + '.zip' 
    var output = fs.createWriteStream(zipPath); 
    var archive = archiver('zip'); 

    output.on('close', function() { 
    console.log(archive.pointer() + ' total bytes'); 
    console.log('archiver has been finalized and the output file descriptor has closed.'); 

    return cb("All ok or path to zip"); 
    }); 

    archive.on('error', function(err) { 
    return cb("Error"); 
    }); 

    archive.pipe(output); 
    //read directory 
    var allLogs = fs.readdirSync('path to dir or to file'); 
    //append files to archive 
    async.eachSeries(allLogs, function(fileName, callback){ 
     var file = path.join(self.logPath, fileName); 
     archive.append(fs.createReadStream(file), { name: fileName }); 
     callback(); 
    }, function(){ 
     //finalize it will trigger on close event 
     archive.finalize(); 
    }); 
} 

Конечно вам нужно будет изменить некоторые пути, но все остальное должно быть в порядке.

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

+0

Как я могу получить zip-файл для загрузки этого файла с помощью zipped csv? – AxOn

+0

Sec i edit answer –

+0

Проверить переменную var zipPath –

Смежные вопросы