Hej, mam pytanie. Czy ktoś z was próbował kiedyś pobierać plik z formularza poprzez sockety, a następnie odbierać go w node i zapisywać ten plik w dowolnym miejscu na dysku? Stworzyłem taką mała komunikację między socketami, zwykłe wysyłanie wiadomości działa, lecz nie mogę sobie poradzić z pobraniem pliku z pola input. Pobiera mi tylko nazwę pliku, a nie jego zawartość. Czy ktoś mógłby pomóc w tej kwestii?
var http = require('http');
var fs = require('fs');
var io = require('socket.io');
var formidable = require('formidable');
var util = require('util');
var path = require('path');
var Upload = require('upload-file');
var server = http.createServer(function (req, res) {
fs.readFile(__dirname + '/index.html', function (err, data) {
if (err) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write("Not Found");
res.end();
} else {
res.write(data, 'utf8');
res.end();
}
});
}).listen(8000);
var listener = io.listen(server);
var ss = require('socket.io-stream');
listener.sockets.on('connection', function (socket) {
console.log("Connected");
socket.on('disconnect', function () {
console.log("Disconnect");
});
socket.on('form.message', function (data) {
console.log(data.file);
socket.emit('new.message', {msg: data});
});
});
index.html (client)
<form id="messageForm" enctype="multipart/form-data">
<label for="file">File</label>
<div class="input-group">
<input type="file" id="file" class="form-control">
</div>
<button type="submit" class="btn btn-primary">Send</button>
</form>
<script>
$(function () {
var socket = io.connect();
var $messageForm = $('#messageForm');
var $file = $('#file');
var $outputFile = $('#outputFile');
var obj = {
file: $file.val()
};
e.preventDefault();
console.log(obj);
socket.emit('form.message', obj);
$file.val('');
socket.on('new.message', function (data) {
$outputFile.append('<div class="well">' + data.msg.file + '</div>');
});
});
</script>