Reputation: 465
I am trying to somehow encrypt a txt, mp3 or any other file in node.js. I am using socket.io. I am building application to send a file to another client and I would like to encrypt the file before I send it. Here is the onsubmit function where I would like to encrypt the file.
form.onsubmit = function(ev){
ev.preventDefault();
var file = document.getElementById('file');
var uploadIds = uploader.upload(file, {
data: { }
});
};
This is the whole script on the client side and the form:
<form id="form" align="center">
<input type="file" id="file" value=multiple/> <!--multiple - za več fajlov-->
<input type="submit" value="Send" />
</form>
<script>
var person = prompt("Please enter your name:"); //uporabnik vnese ime
var socket = io();
socket.emit('join', person);
var uploader = new SocketIOFileClient(socket);
var form = document.getElementById('form');
form.onsubmit = function(ev){
ev.preventDefault();
var file = document.getElementById('file');
var uploadIds = uploader.upload(file, {
data: { }
});
};
</script>
and here is the function where I receive the file on server side:
function make(){
var uploader = new SocketIOFile(socket, {
uploadDir: 'PREJETO ' + socket.person, // kam naloži file
accepts: ['audio/mpeg', 'audio/mp3', 'text/plain', 'application/json'], // tipi datotek
maxFileSize: 4194304, // najvecja dovoljena velikost
chunkSize: 10240,
transmissionDelay: 0, // delay
overwrite: true // prepišemo če datoteka ze obstaja
});
uploader.on('start', (fileInfo) => {
console.log('#U| Start uploading');
});
uploader.on('stream', (fileInfo) => {
console.log(`${fileInfo.wrote} / ${fileInfo.size} byte(s)`);
});
uploader.on('complete', (fileInfo) => {
console.log('#U| Upload Complete.');
console.log(fileInfo);
});
uploader.on('error', (err) => {
console.log('#U| Error!', err);
});
uploader.on('abort', (fileInfo) => {
console.log('#U| Aborted: ', fileInfo);
});
}
Upvotes: 1
Views: 3490
Reputation: 457
You can use FileReader to read the contents of the file, and Encrypt it using Crypto, as suggested by Steve. Then use your current code to send the encrypted file. https://www.npmjs.com/package/filereader https://www.npmjs.com/package/crypto-js
Upvotes: 2