Tag: file io

创build一个洪stream的部分的缩略图

我试图在nodejs中使用torrent-stream库创build一个小应用程序来创buildvideo的缩略图,而不必实际下载整个文件。 我正在考虑只下载10个部分,其中我将提取一个图像,但是随后编码开始发挥作用:没有I-frame我不能从stream中提取图像,并且我无法知道在哪里我的框架是。 那么有关如何做到这一点的任何想法? 基本上我希望能创build10个小文件,然后我可以打开ffmpeg为了保存缩略图(这会给我10个缩略图,这是我想要的)。 我只是不知道如何处理stream。

Nodejs为每个响应发送多个文件

我想发送多个文件给用户每个响应。 例如,用户请求索引站点,并且该站点需要一些.png,css等等。 用户只需要获得所需的一切。 那是这个想法。 所以我的想法是这样可以实现: res.writeHead(200, {'Content-Type': 'text/html'}); var content = fs.readFileSync(applicationPath + "index.html"); res.write(content); content = fs.readFileSync(applicationPath + "images/logo.png"); res.write(content); content = fs.readFileSync(applicationPath + "index.css"); res.write(content); res.end(); 这有可能以任何方式? 还是有其他解决scheme? 感谢您的帮助和解答!

如何用Node.js处理大文件(超过1000个文件)的文件目录?

所以,我有一个相当大的文件目录,我需要在NodeJS应用程序中使用长时间运行的进程持续地进行处理。 目录正在不断处理和清空,但在任何给定时间处理1000个文件并不罕见 – 它们是gzip的CSV文件,所以我天真的解决scheme是抓取目录列表,迭代文件,打开每一个,parsing它们,然后继续,如下所示: files = fs.readdirSync 'directory' for filename in files file_path = path.resolve path.join 'directory', filename fd = fs.openSync file_path, 'r' buf = new Buffer fs.statSync(file_path).size fs.readSync fd, buf, 0, len, 0 fs.closeSync fd zlib.gunzip buf, (err, buf) => throw err if err content = buf.toString().split("\n") for line in content # parse, process […]

在node.js中写入stream上多次写入

我一直在研究node-dirty的代码,并注意到当向一个文件写入大量数据时,原始程序员select将写入分成几个组,并一次一个地写入组,都是作为一个循环的一部分同时发布的,而不用等待任何callback。 我有三个关于这个问题。 我有一个类似的问题要解决。 这在某种程度上更有效率吗? 我应该捆绑写作吗? 我应该如何select最佳的包装尺寸? 为什么不写一个组? 如果我注册到写入stream上的on('drain')事件,那么在所有同时发出的写入完成之后它只会被发射一次吗? 或之后? (我的猜测是前者) 如果发出on('error'),那么('drain')事件是否也会被发射? 还是相互排斥? 谢谢

如何通过设置正确的偏移量和位置来读取文件并使用手动缓冲写入Nodejs中的响应?

我想以64字节的时间间隔读取一个文件。 我也不想使用任何interanlly实现缓冲的function。 我想手动缓冲。 所以我开始使用fs.read()。 我努力尝试,但我真的不知道如何设置位置 ,告诉从哪里读取文件和缓冲区中的偏移量以开始写入。 所以我find了一些资源,并开始自己实施。 但是我所做的似乎是错误的。 请在下面find我的代码。 app.get('/manualBufferAnother', function (req, res, next) { var filePath = path.join(__dirname, 'Koala.jpg'); console.log("FilePath is: "+filePath); var fileName = path.basename(filePath); var mimeType = mime.lookup(filePath); var stat = fs.statSync(filePath); res.writeHead(200, { "Content-Type": mimeType, "Content-Disposition" : "attachment; filename=" + fileName, 'connection': 'keep-alive', "Content-Length": stat.size, "Transfer-Encoding": "chunked" }); fs.open(filePath, 'r', function(err, […]

在Node.js中将数据写入文本文件

目前,我有以下代码块: net = require('net'); var clients = []; net.createServer(function(s) { clients.push(s); s.on('data', function (data) { clients.forEach(function(c) { c.write(data); }); process.stdout.write(data);//write data to command window }); s.on('end', function() { process.stdout.write("lost connection"); }); }).listen(9876); 这是用来设置我的Windows计算机作为服务器,并从我的Linux计算机接收数据。 目前正在将数据写入命令窗口。 我想将数据写入一个文本文件到特定的位置,我该怎么做?

如何查找文件是否在Node.js的目录中?

给定两个绝对path或相对pathA和B ,我想知道B是否在目录A “内部” – 不仅仅在目录本身中,而且可能在子目录中。 我想这样做没有可能庞大的fs.readdir调用数量。 例如,如果A是/而B是/foo/bar/baz , B应该在A之内是非常明显A 。 recursionreaddir方法将是非常低效的。 一个明显的想法是将两个path转换为绝对path,然后检查B的绝对path的stringforms是否以A的stringforms开始。 但是,有两个问题: 你如何将相对path转换为绝对path? 什么是符号链接等? 我将接受调用Linux实用程序(除了rm -rf … 技术上可以用来解决问题)或第三方Node库的答案。

nodejs表示和file upload

好了,所以我已经尝试使用连接forms,我不能得到它的工作原因,但我想我应该明白这是如何工作从零开始不pipe。 我不知道我上传的multipart / formdata文件在哪里,或者当我的应用程序发布到url时,如何访问它。 – 喜欢直接访问文件数据,并使用节点fs模块写入文件输出。 – 例如: app.post('/testy', function(req, res){ console.log(req.body); console.log(req.headers); res.redirect('back'); }); app.get('/testy', function(req, res){ res.send('<form method="post" action="/testy" enctype="multipart/form-data">' + '<p>Image: <input type="file" name="test" /></p>' + '<p><input type="submit" value="Upload" /></p>' + '</form>'); }); 所以实际上被logging在那里的唯一req var是req标头,body是空的。 (可能应该是我明白了)。 但我没有得到的是文件数据在哪里? 寻找$ _FILES数组的php equiv我想。 – 这是我的标题logging。 'accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'accept-language': 'en-us,en;q=0.5', 'accept-encoding': 'gzip,deflate', 'accept-charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7', 'keep-alive': '115', […]

文件存在,但收到ENOENT错误

这是一个要点: https : //gist.github.com/973e70bde8e6a530c489 我有两种情况。 即使代码完全一样,一个人也可以工作,一个人失败。 把一个CSV文件已经在框中parsing它。 完美的作品。 没有问题。 以一个刚刚创build的CSV文件并试图parsing它,我收到: ENOENT,没有这样的文件或目录'/Users/Home/dev/csv/TwFrI5vhdownload.csv 相同的CSV文件格式和所有。 反正无所谓,因为创build的文件甚至不会打开。 即使文件存在,也会失败。 如果我重新启动节点,并试图抓住该文件,那么它完美的作品。 如果我在新创build的文件上运行fs.stat,则失败。 我试过超时,外部callback等,但与dynamic创build的文件,它总是失败。 我在这里错过了什么? 文件是否被locking,我不知道? 谢谢! 系统: OSX Lion节点v0.6.7

Node.JS fs.rename不起作用

在Debian Wheezy上重命名文件不能使用fs.rename或fs.renameSync。 这只发生在从/ tmp /移动到另一个位置的文件中。 报告的错误是:EXDEV,不允许跨设备链接。