Я на самом деле делаю проект, где у меня есть ftp-сервер, я хочу иметь возможность получить файл с моего компьютера, зашифровать его и поместить на ftp-сервер. А также получите файл с ftp-сервера, расшифруйте его и поместите на мой компьютер.
На первом этапе он работал успешно:
router.post('/uploadftpobj', function(req, res) {
let status = {
status: 400,
message: ''
};
let token = req.fields.idToken;
let buffer = req.files.file;
let filename = buffer.name.replace(/[^\w\-\.]/gi, '');
ini.admin.auth().verifyIdToken(token).then(async (decodedToken) => {
if (!filename.endsWith(".obj")) {
status.status = 400;
status.message = "File must be a .obj !";
res.send(status);
return;
}
let data = fs.readFileSync(buffer._writeStream.path);
let cipher = crypto.createCipher('aes-256-cbc',KeyCrypto);
let crypted = Buffer.concat([cipher.update(data),cipher.final()]);
ftp_orthese_socket.put(crypted, "/obj_files/" + filename , err => {
if (err) {
status.status = 400;
status.message = "File cannot be uploaded !";
res.send(status);
} else {
status.status = 200;
status.message = "File has been uploaded !";
res.send(status);
}
})
})
});
Я получил зашифрованный файл на своем ftp сервер и все ок. Но на этапе загрузки у меня ничего не получилось. Вот мой код:
router.post('/downloadftpobj', function(req, res) {
let status = {
status: 200,
message: 'The content of the file has been downloaded to the requested path !',
};
let token = req.fields.idToken;
let user_path = req.fields.path;
ini.admin.auth().verifyIdToken(token).then(async (decodedToken) => {
if (!user_path.endsWith(".obj")) {
status.status = 400;
status.message = "File must be an .obj !";
res.send(status);
return;
}
let decipher = crypto.createDecipher('aes-256-cbc',KeyCrypto);
var str = "";
ftp_orthese_socket.get("/obj_files/" + user_path, (err, socket) => {
if (err) {
console.error(err);
return;
}
socket.on("data", d => {
str += d.toString();
});
console.log(str);
});
})
});
На данный момент я пытался поместить данные моего файла в str, но когда я console.log (str), он пуст. Я действительно не вижу никакого решения, если у вас есть какие-либо советы о чем-либо еще, я слушаю! :)
Спасибо