Node.js: lee y descarga todos los files en el directory del server y guarda localmente

Tengo una aplicación de escritorio Node Webkit y necesito download files del server y save localmente cuando los usuarios están desconectados. Puedo download y save un file cuando sé cuál es el nombre del file, pero ¿cómo leo los contenidos de un directory en el server para poder download cada file?

function cacheFiles(filelink, filepath, cb) { var path_array = filelink.split("/"); var foldername = path_array[path_array.length - 2] //create new folder for locally html files var newdir = filepath + '/' + foldername; if (fs.existsSync(newdir)){ alert('file already exists, cannot cache this file.'); } else { fs.mkdirSync(newdir); } //download and save index.html - THIS WORKS var indexfile = fs.createWriteStream(newdir+'/index.html'); var request = http.get(filelink, function(response) { response.pipe(indexfile); indexfile.on('finish', function() { indexfile.close(cb); }); }); //read contents of data folder - THIS DOESN'T WORK var datafolder = filelink.replace('index.html',''); fs.readdir( datafolder, function (err, datafiles) { if (!err) { console.log(datafiles); }else{ console.log(err) ; } }); 

}

El error que recibo en mi console es:

"ENOENT: no existe ese file o directory, scandir 'C: \ Users \ mi.nombre \ desktopApp \ app \ http: \ mysite.co.uk \ wp-content \ uploads \ wifi_corp2 \ data'"

Lo anterior está buscando los files localmente y no en el enlace en línea que proporcioné en filelink, por ejemplo. http://www.misitio.es/wp-content/uploads/wifi_corp2/data

El siguiente código no lee un sistema de files remoto, se usa para leer files en su disco duro local.

 import fs from 'fs' import path from 'path' fs.readdir(path.resolve(__dirname, '..', 'public'), 'utf8', (err, files) => { files.forEach((file) => console.info(file)) }) 

Imprimirá todos los nombres de file de un directory y en un directory 'público' desde la location del script. Puede usar fs.readFile para leer el contenido de cada file. Si son JSON, puede leerlos como cadenas utf8 y analizarlos con JSON.parse .

Para leer files desde un server remoto, deben ser servidos a través de Express o algún otro server de files estático:

 import express from 'express' const app = express() app.use(express.static('public')) app.listen(8000) 

Luego, en el extremo del cliente, puede usar search o solicitar la biblioteca http para llamar al punto final expreso alojado en el puerto 8000 (en este ejemplo simple).

Está mezclando el código del server con el código de la aplicación de escritorio. Obviamente, la aplicación de escritorio no puede hacer un readdir en los files de tu server. Simplemente instale un complemento de copy de security o descarga en WordPress.

OK, estoy pensando que la mejor manera de evitar esto es usar Ajax para llamar a una function de PHP en el server para leer el contenido del file.