這是我的源代碼。如何使用socket.io-stream上傳文件?
<server.js>
var app = require('./app.js');
var socketIO = require('socket.io');
var ss = require('socket.io-stream');
var path = require('path');
var fs = require('fs');
var server = app.listen(53322, function() {
console.log('server is working at port 53322');
});
var io = socketIO.listen(server);
io.on('connection', function (socket) {
ss(socket).on('file', function(stream, data) {
console.log(data);
var filename = path.basename(data.name);
var filepath = path.join('./uploads', filename);
var ws = fs.createWriteStream(filepath);
stream.pipe(ws);
});
});
<client script>
window.onload = function() {
var socket = io.connect('http://localhost:53322');
$('#media-form').submit(function(e) {
var file = e.target[0].files[0];
var filename = file.name;
var filesize = file.size;
var enc = e.target.encoding;
var stream = ss.createStream();
ss(socket).emit('file', stream, {
data : file,
size : filesize,
name : filename,
enc : enc}
);
var blobstream = ss.createBlobReadStream(filename);
blobstream.pipe(stream);
return false;
});
};
我在服務器代碼中插入console.log(data);
檢查文件是否正確上傳。例如,我在輸入元素中選擇'IMG_4433.jpg'圖像文件,然後單擊提交。 '文件'事件完成後,我的控制檯打印此消息。
{ data: <Buffer ff d8 ff e1 0f fe 45 78 69 66 00 00 4d 4d 00 2a 00 00 00 08 00 0b 01 0f 00 02 00 00 00 06 00 00 00 92 01 10 00 02 00 00 00 0a 00 00 00 98 01 12 00 03 ... >,
size: 393825,
name: 'IMG_4433.JPG',
enc: 'application/x-www-form-urlencoded' }
我發現'IMG_4433.jpg'被上傳到'uploads'文件夾。但它的文件大小是0字節。我認爲這可能是數據緩衝區中的問題......但我不知道如何處理它。
幫助!
你解決這個問題?我在同一個地方了。我現在想使用套接字文件上傳插件雖然 –
當我在客戶端使用uploader.listenOnInput(document.getElementById(「siofu_input」))代碼時,我也在瀏覽器控制檯中得到這個'TypeError:inpt is null'錯誤。任何幫助appriciated。 –