I am trying to make a CLI which upload only specific .extension file for Example if I want to upload .jpg
file then only JPG
file should be uploaded by making JPG
folder
const { program } = require("commander");
const fs = require("fs");
const path = require("path");
program.version("0.0.1");
program
.command("file")
.alias("f")
.description("Add filename with filepath")
.action(() => {
prompt(questions).then((answers) => {
try {
// compare extension
const extension = path.extname(answers.fileName);
const allowedExtension = ".jpg";
if (allowedExtension !== extension) {
console.log("Use only .jpg Extension file");
} else {
// make dir
fs.mkdir(path.join(__dirname, "JPG"), { recursive: true }, (err) => {
if (err) {
return console.error(err);
}
// read file or uploaded file
const file = fs.createReadStream(
`${answers.filePath}/${answers.fileName}`
);
console.log(
"Directory created successfully!",
answers.fileName,
answers.filePath
);
});
}
} catch (error) {
console.log(error.message);
}
});
});
program.parse(process.argv);
but don't know how to upload file by using CLI in the provided folder
CodePudding user response:
Upload it using writeFile function:
const { program } = require("commander");
const fs = require("fs");
const path = require("path");
program.version("0.0.1");
program
.command("file")
.alias("f")
.description("Add filename with filepath")
.action(() => {
prompt(questions).then((answers) => {
try {
// compare extension
const extension = path.extname(answers.fileName);
const allowedExtension = ".jpg";
if (allowedExtension !== extension) {
console.log("Use only .jpg Extension file");
} else {
// make dir
fs.mkdir(path.join(__dirname, "JPG"), { recursive: true }, (err) => {
if (err) {
return console.error(err);
}
const file = fs.createReadStream(
`${answers.filePath}/${answers.fileName}`
);
fs.writeFile(`${answers.filePath}/${answers.fileName}`,file,(err) => console.log(err))
console.log(
"Directory created successfully!",
answers.fileName,
answers.filePath
);
});
}
} catch (error) {
console.log(error.message);
}
});
});
program.parse(process.argv);
CodePudding user response:
I have never used nodeJs so this may or may not work. You should look up scp for cli transfer between two sources, you can install the node-scp module using npm(or so I read)
npm i node-scp
Then you need to go about importing it, defining source and destination paths, and then using it.
var local_folder_path = './local/dir';
var detination_folder_path = '/server/path';
send_folder_using_async_await(local_folder_path, detination_folder_path);
async function send_folder_using_async_await(folder_path,
destination_path)
{
try {
const client = await scp(remote_server)
await client.uploadDir(folder_path, destination_path)
client.close()
} catch (e) {
console.log(e)
}
}
Something like this.