我正在编写一个简单的(ish)应用程序,它允许工作的内部系统从远程服务器向另一个使用REST调用激发的远程服务器请求一个复制过程(使用rsync)。 我对express框架已经很熟悉了,刚开始尝试使用child_process库,偶然发现了一个小问题。 我成功地启动rsync进程使用节点的childProcess.spawn() ,我的问题是,rsync输出其行进缓冲回车符(\ r),而不是一个换行符(\ n)。 因此,STDOUT事件process.stdout.on('data', {})仅在调用传输之前被调用一次,然后在复制完成之后,由于STDOUT数据不会被清空作为进度更新返回,只有一个换行符,当工作完成。 在最新版本的rsync(3.1.0)中有一个开关将输出缓冲区结尾改为\ n而不是\ r,但不幸的是,我工作的公司将不会长期采用这个版本。 我正在产卵,并以通常的方式读取child_process …. var doCopy = function (onFinish) { var process = childProcess.spawn('ssh', [ source.user + "@" + source.host, "rsync", "-avz", "–progress", source.path + source.file, "-e ssh", dest.user + "@" + dest.host + ":" + dest.path ]); process.on('error', function (error) { console.log("ERR: " + error.code); […]
我想用nodejs创build一个stream媒体服务器(我知道有很多,但我想创build一个使用nodejs),问题是,video不像YouTube上得到下载,你可以给如何做像YouTube一样获得stream媒体,谢谢 var http = require('http'), var fs = require('fs'), var util = require('util'); http.createServer(function (req, res) { var path = '/home/flumotion/test.mp4'; var stat = fs.statSync(path); var total = stat.size; if (req.headers['range']) { var range = req.headers.range; console.log("Range = "+range); var parts = range.replace(/bytes=/, "").split("-"); var partialstart = parts[0]; var partialend = parts[1]; var start = […]
使用AWS开发工具包,我可以存储文件(压缩或未压缩)和压缩目录(使用tar),但不能解压缩目录。 安装程序和依赖关系: var aws = require('aws-sdk'), s3 = new aws.S3(), fs = require('fs'), fstream = require('fstream'), zlib = require('zlib'), tar = require('tar'), key = 'test', bucket = 'mybucket'; 修正了上传代码: var params = { Bucket: bucket, Key: key, Body: body }; s3.upload(params) .send(function(err, data) { console.log("data:", data); } }); 存储文件,未压缩: body = fs.createReadStream('/var/www/file.txt'); 存储文件,压缩: body = […]
我想知道是否有一些function可用来指定azure blobstream的最大长度,以便只有指定的大小上传和rest被丢弃,即文件被截断。 题 我的需要是为文件指定最大大小,例如50或60 Mb,如果文件大小最大,我希望文件被截断。 (文件可以是大型日志文件或video文件) 我有以下代码工作(我正在使用多方的forms和azure色的存储节点包azure) // form.on is from multiparty form.on('part', function(part) { var streamLength = 25 * 1024 * 1024; // part.byteCount if (part.filename) { form.on('part', function(part) { if (part.filename) { blobService.createBlockBlobFromStream(container, blobName, part, streamLength, function(err, blobContent, blob) { if (err) { // do sth with error } return blobContent; }); } […]
我想将一个subprocess的stdout和stderr合并成一个单一的中间stream,然后我可以使用它并进行处理。 这是可能的标准的API? (我意识到交错两个stream有细微的差别,我需要它们只在行结束时交错才行。比如,写一行到stdout或stderr应该是一个primefaces操作)。
我正在尝试创buildvideostream服务器和客户端节点fluent-ffmpeg , express和ejs 。 而且有一段时间没有解决这个问题。 我想要做的是从一定时间开始播放video。 下面的代码使用Safari浏览器在Windows上,但与其他人做了几秒钟的循环或说 不支持video格式 服务器代码(run.js) : app.get('/video', function(req, res) { //define file path,time to seek the beegining and set ffmpeg binary var pathToMovie = '../videos/test.mp4'; var seektime = 100; proc.setFfmpegPath(__dirname + "/ffmpeg/ffmpeg"); //encoding the video source var proc = new ffmpeg({source: pathToMovie}) .seekInput(seektime) .withVideoBitrate(1024) .withVideoCodec('libx264') .withAspect('16:9') .withFps(24) .withAudioBitrate('128k') .withAudioCodec('libfaac') .toFormat('mp4'); //pipe […]
这是我的源代码。 <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 = […]
我试图find一种方法来检查一个pipe道是否冻结或数据仍然是pipe道。 我有以下代码: var downloadStream1 = download1.createReadStream(); var pipeOfDownloadClient = downloadStream1.pipe(response); 我试图find这样的事件: pipeOfDownloadClient.on('data', function(data){ logger.info("Data is piping"); }) 但是当我这样做,没有data is piping打印,虽然数据传输到客户端。
我似乎无法弄清楚为什么我得到这个错误与我的streampipe道。 我想我已经耗尽了所有的path,所以有什么我想念的东西:这是我有: var myCsvStream = fs.createReadStream('csv_files/myCSVFile.csv'); var csv = require('fast-csv'); var myData = []; var myFuncs = { parseCsvFile: function (filepath) { var csvStream; csvStream = csv .parse({headers: true, objectMode: true, trim: true}) .on('data', function (data) { myData.push(data); }) .on('end', function () { console.log('done parsing counties') }); return csvStream; } } myCsvStream .pipe(myFuncs.parseCsvFile()) .pipe(process.stdout); process.stdout就是这样,我可以看到,数据可以继续到下一个stream,但是,当添加pipe(process.stdout) […]
我正在编写用NodeJS编写的REST服务器脚本。 此脚本允许用户执行POST请求上传文件。 由于我的服务器不负责存储文件,并由另一个也是REST服务器的远程服务器负责,我喜欢将file uploadstream转发/redirect到该远程服务器。 什么是最好的方法来做到这一点? 我应该缓冲stream,并等待,直到我收到文件的全部stream式传输到远程服务器之前? 要么 我应该只是将数据块传输到远程服务器,因为我收到它们? 我试着用我的上传路线pipe道, req.pipe(request.post(connection).pipe(res) 但是我从远程服务器收到错误 – “连接已被客户端取消”。 要么 是否有可能将传入的上传streamredirect到远程服务器,以便我的脚本不会是中间人? 谢谢