Я пытаюсь создать загрузку файла через socket.io 1.0.4 и последнюю версию socket.io-stream. Каждый раз, когда я пытаюсь передать ss(socket).emit('mediaupload', file);
, событие выполняется на клиенте, но не вызывается на стороне сервера. Я не получаю сообщений об отладке или ошибках. Если я попытаюсь передать событие через socket.emit('mediaupload')
, сервер получит это событие.
Объявление сервера
ss(socket).on('mediaupload', function(stream, data) {
debug('Data:', data);
...
}
Я уже не знаю, что попробовать.
uploadFile: function (fileWithMeta, callback_end, callback_data) {
var file=fileWithMeta.file;
var stream = ss.createStream();
log.log('File to Upload with stream: ', stream);
ss(socket).emit('mediaupload', file);
var blobStream = ss.createBlobReadStream(file);
if (callback_end){
blobStream.on('end', function(e) {
callback_end(e);
});
}
if (callback_data){
var uploadedSize=0;
blobStream.on('data', function(chunk) {
uploadedSize+=chunk.length;
callback_data(Math.floor(uploadedSize / file.size * 100), uploadedSize, chunk);
});
}
blobStream.pipe(stream);
}
Я прочитал входной файл по директиве angularjs.
angular.module('oo.util').directive('ooFileReader', ['ooLog', '$parse', function (log, $parse) {
var slice = Array.prototype.slice;
return {
restrict: 'A',
//scope: false,
link: function (scope, element, attrs) {
element.bind("change", function (e) {
$parse(attrs.ooFileReader).assign(scope, e.target.files[0]);
});
}
};}]);
часть шаблона
<input name="fileupload" type="file" oo-file-reader="fileupload" multiple>
Вызов функции: uploadFile вызывается с переменной $scope.fileupload.
$scope.uploadFile=function(file){
log.log('Add File: ', file);
websocket.uploadFile(file, function(){
log.log('Upload Finished!');
}, function(percentUploaded){
log.log('Uploading: ' + percentUploaded + '%');
});
};